Spring中的问题在jsp中启用了控制器页面呈现

时间:2010-12-10 10:26:07

标签: java spring spring-mvc

当我这样做时。

@RequestMapping("/folder/{name}.jsp")
public ModelAndView catchAll(@PathVariable String viewName) {
    return new ModelAndView("legacy/" + viewName);
}

它在浏览器上出现错误

  

legacy / 123.jsp不可用

如何解决此问题

如果我有一个id列表,

我希望浏览器显示为/ legacy / 1 / legacy / 2等,以便我可以在春天编程

2 个答案:

答案 0 :(得分:2)

您需要将123.jsp放在放置JSP的目录的legacy子目录中。

但我猜这不是你想要的:我猜想你想建立一些转发。在这种情况下,您必须返回重定向视图。

@RequestMapping("/folder/{name}.jsp")
public ModelAndView catchAll(@PathVariable String viewName) {
    return new ModelAndView(new RedirectView("legacy/" + viewName + ".jsp"));
}

答案 1 :(得分:0)

你告诉Spring渲染一个不存在的jsp页面。如果你的jsp的名字是“legacy.jsp”,那就是你渲染的视图,你只是根据参数将另一个对象传递给视图。如果您希望legacy/123带您到“legacy.jsp”,它将显示ID为123的Legacy对象,那么您可以这样做:

@RequestMapping("/legacy/{id}")
public ModelAndView catchAll(@PathVariable("id") String id) {
  Legacy legacy = // Get the object from your database using the id
  return new ModelAndView("legacy", "legacy", legacy); // insert the legacy object into your view, it will be accessed by the name "legacy"
}

因此,您可以在浏览器中输入网址“/ legacy / 123”(或单击指向该链接的链接),然后使用标识{{1}将legacy.jsp与您提取的对象一起呈现}。