【发布时间】:2016-03-03 16:00:35
【问题描述】:
我有一个视图解析器:
@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 时,它会为src/main/webapp/WEB-INF/jsp/workflowlist.jsp 提供jsp。这一切似乎都运作良好。
但是,当我尝试添加 @PathVariable:
@RequestMapping(path = "/workflowlist/{profile}", method = RequestMethod.GET)
public ModelAndView workflowlist(@PathVariable String profile)
throws LoginFailureException, PacketException, NetworkException {
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
有人可以解释为什么我在两种情况下都返回相同的视图名称,但在第二个示例中它的行为不同?
我怎样才能让它工作?
【问题讨论】:
-
新映射中的路径变量是必需的,所以
/workflowlist没有命中@RequestMapping方法,你最终得到404。你需要设置2个映射,像这样:@987654321 @ -
谢谢,您强调了我的问题(我已更新)的问题。我在第二个例子中打电话给
http://127.0.0.1:8090/workflowlist/dev。它在我的控制器内遇到了一个断点,但即使我返回相同的视图名称,生成的视图路径也不同。为什么? -
@approxiblue - 你是唯一一个试图提供帮助的人,所以如果你创造了一个答案,我会奖励你赏金,否则赏金点将消失在以太中。
-
还有什么我应该详细说明的吗?我不想重复你的答案。
-
如果你知道为什么视图解析器只占用目录部分并解释我的最后一段,那就太好了。
标签: spring-mvc request-mapping