Spring mvc 添加PathVariable会更改RequestMapping上的视图路径

Spring mvc 添加PathVariable会更改RequestMapping上的视图路径,spring-mvc,request-mapping,Spring Mvc,Request Mapping,我有一个视图解析器: @Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("WEB-INF/jsp/"); resolver.setSuffix(".jsp"); return resolver; } 以及控制

我有一个视图解析器:

@Bean
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("WEB-INF/jsp/");
    resolver.setSuffix(".jsp");
    return resolver;
}
以及控制器:

@Controller
public class WorkflowListController {

 @RequestMapping(path = "/workflowlist", method = RequestMethod.GET)
 public ModelAndView index() throws LoginFailureException, PacketException,
        NetworkException {

    String profile = "dev";
    List<WorkflowInformation> workflows = workflows(profile);

    Map<String, Object> map = new HashMap<String, Object>();
    map.put("profile", profile);
    map.put("workflows", workflows);
    return new ModelAndView("workflowlist", map);
 }
}
当我调用页面
http://127.0.0.1:8090/workflowlist/dev
给出了以下信息:

There was an unexpected error (type=Not Found, status=404).
/workflowlist/WEB-INF/jsp/workflowlist.jsp
有人能解释为什么我在两种情况下都返回相同的视图名称,但在第二个示例中,它的行为不同吗


如何使其工作?

问题出在我的
视图解析器上:

resolver.setPrefix("WEB-INF/jsp/");
应该是:

resolver.setPrefix("/WEB-INF/jsp/");
前面有一个
/
时,路径取自根目录(webapps文件夹),但当
/
丢失时,它将成为一个相对路径

我从来没有得到一个答案,为什么视图解析器只获取路径的目录部分,但这似乎就是发生的事情。
可能是这样,您可以定义具有不同根的视图子树。

新映射中的path变量是必需的,因此
/workflowlist
不会命中
@RequestMapping
方法,最终得到404。您需要设置两个映射,如下所示:谢谢,您突出显示了我的问题(我已经更新了)的一个问题。我正在呼叫
http://127.0.0.1:8090/workflowlist/dev
在第二个示例中。它在我的控制器中遇到了一个断点,但是生成的视图路径是不同的,即使我返回的是相同的视图名称。为什么?@approxiblue-你是唯一一个试图帮助的人,所以如果你给出答案,我会奖励你奖金,否则奖金点数会消失在以太中。还有什么我要详细说明的吗?我不想重复你的答案。如果你知道为什么视图解析器只取目录部分,并解释我的最后一段,那就太好了。
resolver.setPrefix("/WEB-INF/jsp/");