定义 ParameterizableViewController 以使用视图自动重定向路径 url

Define ParameterizableViewController to auto redirect path url with view

我正在使用 spring boot 1.2.1,我想像在 xml 风格中那样配置一个 ParameterizableViewController :

例如在我做之前:

<mvc:view-controller path="/ie7"/>

该代码将 url(如 http://mywebsite.com/mycontext/ie7)重定向到 /WEB-INF/views/ie7 中的 jsp,而无需直接创建控制器。

我想用 spring 启动做同样的事情。在网上查看后,我的配置文件中有这个:

@Bean(name = "ie7Controller")
public ParameterizableViewController getIe7ControllerView() {
    ParameterizableViewController viewController = new ParameterizableViewController();
    viewController.setViewName("ie7");
    return viewController;
}

在我的 application.properties 中,我这样配置视图:

spring.view.prefix=/WEB-INF/views/
spring.view.suffix=.jsp

我也尝试添加:

 @Bean
public InternalResourceViewResolver getViewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".jsp");
    return viewResolver;
}

但是当我尝试 http://mywebsite.com/mycontext/ie7 时,我得到了 404。 这是我得到的日志:

应用启动期间:

Rejected bean name 'ie7Controller': no URL paths identified

当我尝试调用页面时:

2015-02-11 09:01:42.693 DEBUG 1160 --- [nio-8080-exec-2]      o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name    'dispatcherServlet' processing GET request for [/stdapps/ie7]
2015-02-11 09:01:42.699 DEBUG 1160 --- [nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /ie7
2015-02-11 09:01:42.704 DEBUG 1160 --- [nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Did not find handler method for [/ie7]
2015-02-11 09:01:42.706 DEBUG 1160 --- [nio-8080-exec-2] o.s.w.s.handler.SimpleUrlHandlerMapping  : Matching patterns for request [/ie7] are [/**]
2015-02-11 09:01:42.708 DEBUG 1160 --- [nio-8080-exec-2] o.s.w.s.handler.SimpleUrlHandlerMapping  : URI Template variables for request [/ie7] are {}
2015-02-11 09:01:42.712 DEBUG 1160 --- [nio-8080-exec-2] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapping [/ie7] to HandlerExecutionChain with handler [ResourceHttpRequestHandler [locations=[ServletContext resource [/], class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@39689892]]] and 1 interceptor
2015-02-11 09:01:42.714 DEBUG 1160 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Last-Modified value for [/stdapps/ie7] is: -1

我错过了什么吗?我觉得我需要在某处指定和 url,我尝试添加 @RequestMapping(value="ie7") 和 @Bean(name = "ie7Controller") 没有运气

感谢您的帮助

如果我正确理解了您的要求,那么下面的代码应该可以解决问题:

@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableWebMvc
public class Application extends WebMvcConfigurerAdapter {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/ie7").setViewName("ie7");
    };

}