定义 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");
};
}
我正在使用 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");
};
}