我正在使用UrlBasedViewResolver。我的要求是两个不同的URls与同一个控制器对话,他们应该根据URL转到两个不同的页面,即page1或page2。 这两个页面具有相同的模型对象,它们几乎相同,除了少量的UI更改。如何在Spring MVC中巧妙地实现这一目标。
@RequestMapping(value = {"/page1","/page2"}, method=RequestMethod.GET)
public String displayPage(ModelMap map){
// return to Page1 or Page2 accordingly wherever it came from
}
@RequestMapping(value = {"/page1","/page2"}, method=RequestMethod.POST)
public ModelAndView submitPage(@ModelAttribute("model") Model model){
return new ModelAndView("page1 or page2", "command", model);
}
答案 0 :(得分:2)
一个选项:
@RequestMapping(value = {"/page1"}, method=RequestMethod.GET)
public String displayPage1(ModelMap map){
displayPageCommon(map);
return "Page1";
}
@RequestMapping(value = {"/page2"}, method=RequestMethod.GET)
public String displayPage2(ModelMap map){
displayPageCommon(map);
return "Page2";
}
private void displayPageCommon(ModelMap map){
//shared code
}
另:
@RequestMapping(value = {"/{pageName}"}, method=RequestMethod.GET)
public String displayPage(@PathVariable String pageName, ModelMap map){
//shared code
return pageName;
}
第二个选项可能会出现一些问题,具体取决于您的控制器映射,以及由于尝试根据传入的URL返回视图而导致的一些潜在安全问题。