1

我正在使用 UrlBasedViewResolver。我的要求是两个不同的 URl 与同一个控制器对话,并且它们应该根据 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); 
}
4

1 回答 1

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

于 2012-08-16T05:27:22.853 回答