Java Spring MVC如何处理对Angular路由器生成的URL的请求?

Java Spring MVC如何处理对Angular路由器生成的URL的请求?,java,spring,spring-mvc,angular,Java,Spring,Spring Mvc,Angular,我有一个Spring(v、4.3.2和Java 8)应用程序,它提供一个Angular2单页应用程序前端,该应用程序前端有多个路由(比如/foo、/bar和/baz),其中一个需要一个参数来呈现(/baz/x,其中x是要检索的资源的标识符) html由标准的Spring MVC@控制器提供: @RequestMapping(value = {"/", "/foo", "/bar", "/baz/{id}"}, method = RequestMethod.GET) public String i

我有一个Spring(v、4.3.2和Java 8)应用程序,它提供一个Angular2单页应用程序前端,该应用程序前端有多个路由(比如
/foo
/bar
/baz
),其中一个需要一个参数来呈现(
/baz/x
,其中x是要检索的资源的标识符)

html由标准的Spring MVC
@控制器提供:

@RequestMapping(value = {"/", "/foo", "/bar", "/baz/{id}"}, method = RequestMethod.GET)
public String index(@PathVariable Optional<String> id) {
    return "index";
}
如果浏览器从
/
/foo
/bar
路由重新加载,则控制器将正确返回
索引
页面,并按预期解析路由视图。但是,如果浏览器从包含参数的
baz
路由之一重新加载,则服务器将预先设置
baz
>到资源路径(例如,
/baz/WEB-INF/pages/index.jsp
),这将导致404错误

我已经尝试将
baz
请求映射信息重构为一个不同(相同)方法的注释,并在请求映射中使用通配符(例如
/**
baz/*
),但总是得到相同的结果。无论请求映射如何,Spring似乎不知道它正在将
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

如果您对此有任何帮助,我们将不胜感激。

解决了此问题-从前缀参数字符串中省略前导斜杠会导致此问题。要进行正确配置,参数应为:

viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setPrefix("/WEB-INF/pages/");