Spring MVC多个@RequestMappings

时间:2012-08-16 05:13:54

标签: spring-mvc

我正在使用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); 
}

1 个答案:

答案 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返回视图而导致的一些潜在安全问题。