spring-mobile和apache-tiles帮助使用常见元素

时间:2017-01-19 09:42:37

标签: java spring apache-tiles spring-mobile

您在使用spring mobile配置apache磁贴时遇到问题。当我尝试从移动设备访问Web应用程序时,它没有显示移动jsp,它将位于移动文件夹中。以下是应用程序配置文件中的代码

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/");
    }

}

位指示

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";       
    }

}

0 个答案:

没有答案