2
我有一个春天(V,4.3.2 &的Java 8)应用程序,它提供了具有多条路线(比如/foo
,/bar
和/baz
,其中一个需要一个参数来呈现Angular2单页应用前端(/baz/x
哪里x是资源检索)的标识符Spring MVC如何处理对角度路由器生成的URL的请求?
的HTML是提供了一个标准的Spring MVC @Controller
:使用
@RequestMapping(value = {"/", "/foo", "/bar", "/baz/{id}"}, method = RequestMethod.GET)
public String index(@PathVariable Optional<String> id) {
return "index";
}
和意见得到解决:
@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
如果浏览器从/
,或/foo
路由/bar
重新加载,则控制器正确地返回index
页和角如预期解析路由的视图。但是,如果浏览器从包含参数的baz
路由之一重新加载,则服务器会将baz
预加载到资源路径(例如/baz/WEB-INF/pages/index.jsp
),从而导致404错误。
我试图重构该baz
请求映射信息插入一个不同的(相同的)方法的注释,并在请求映射(例如/**
和baz/*
)使用通配符,但总是得到相同的结果。不管请求映射,春天似乎不知道它正在追加baz
到路径,如日志包含:
DEBUG: org.springframework.web.servlet.DispatcherServlet - Rendering view [org.springframework.web.servlet.view.InternalResourceView: name 'index'; URL [WEB-INF/pages/index.jsp]] in DispatcherServlet with name 'dispatcher'
DEBUG: org.springframework.web.servlet.view.InternalResourceView - Forwarding to resource [WEB-INF/pages/index.jsp] in InternalResourceView 'index'
DEBUG: org.springframework.web.servlet.DispatcherServlet - Successfully completed request
任何帮助,在此,将不胜感激。