1

Hi having an issue with configuring apache tiles with spring mobile.When iam trying to access the web application from mobile its not showing mobile jsp which will be in mobile folder. Below is the code which is in app configuration file

AppConfig.Java

package com.sasanka.configuration;

import java.util.List;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.mobile.device.DeviceHandlerMethodArgumentResolver;
import org.springframework.mobile.device.DeviceResolverHandlerInterceptor;
import org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesViewResolver;

/**
 * @author M V Prasad
 *
 */
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.sasanka")
public class AppConfig extends WebMvcConfigurerAdapter{

/*  @Bean
    public InternalResourceViewResolver resolver(){
        InternalResourceViewResolver internalResourceViewResolver=new InternalResourceViewResolver();
        internalResourceViewResolver.setPrefix("/WEB-INF/views/");
        internalResourceViewResolver.setSuffix(".jsp");
        //internalResourceViewResolver.setOrder(1);
        return internalResourceViewResolver;

    }*/
    /**
     * Configure TilesConfigurer.
     */
    @Bean
    public TilesConfigurer tilesConfigurer(){
        TilesConfigurer tilesConfigurer = new TilesConfigurer();
        tilesConfigurer.setDefinitions(new String[] {"/WEB-INF/tiles/tiles-defs.xml",
                                                     "/WEB-INF/tiles/homePageViews.xml",
                                                     "/WEB-INF/tiles/lessonViews.xml",
                                                     "/WEB-INF/tiles/mslViews.xml"});
        tilesConfigurer.setCheckRefresh(true);
        return tilesConfigurer;
    }


    @Bean
    public DeviceResolverHandlerInterceptor 
            deviceResolverHandlerInterceptor() {
        return new DeviceResolverHandlerInterceptor();
    }

    @Bean
    public DeviceHandlerMethodArgumentResolver 
            deviceHandlerMethodArgumentResolver() {
        return new DeviceHandlerMethodArgumentResolver();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(deviceResolverHandlerInterceptor());
    }


    /**
     * Configure ViewResolvers to deliver preferred views.
     */
   @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        TilesViewResolver viewResolver = new TilesViewResolver();
        viewResolver.setOrder(0);
        registry.viewResolver(viewResolver);
    }  

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
    argumentResolvers.add(deviceHandlerMethodArgumentResolver());
}   
 @Bean
 public LiteDeviceDelegatingViewResolver liteDeviceAwareViewResolver() {
     InternalResourceViewResolver delegate = 
             new InternalResourceViewResolver();
     delegate.setPrefix("/WEB-INF/views/");
     delegate.setSuffix(".jsp");

     LiteDeviceDelegatingViewResolver resolver = 
             new LiteDeviceDelegatingViewResolver(delegate);
     resolver.setOrder(0);
     resolver.setMobilePrefix("mobile/");
     resolver.setTabletPrefix("tablet/");
     return resolver;
 }


    /**
     * Configure ResourceHandlers to serve static resources like CSS/ Javascript etc...
     */

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
        registry.addResourceHandler("/static/**").addResourceLocations("/static/");
    }

}

Contoller

package com.sasanka.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mobile.device.Device;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.sasanka.beans.UserBean;
import com.sasanka.service.UserService;


@Controller
public class HomeController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = { "/", "/home" }, method = RequestMethod.GET)
    public String home(Model model,Device device) {
          return "home";       
    }

}
Rade
  • 11
  • 1

0 Answers0