Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Spring MVC多个@RequestMappings_Spring Mvc - Fatal编程技术网

Spring mvc Spring MVC多个@RequestMappings

Spring mvc Spring MVC多个@RequestMappings,spring-mvc,Spring Mvc,我正在使用UrlBasedViewResolver。我的要求是,两个不同的URL与同一个控制器通信,它们应该根据URL转到两个不同的页面,即page1或page2。 这两个页面具有相同的模型对象,它们几乎相同,除了一些小的UI更改。如何在SpringMVC中巧妙地实现这一点 @RequestMapping(value = {"/page1","/page2"}, method=RequestMethod.GET) public String displayPage(ModelMap map){

我正在使用UrlBasedViewResolver。我的要求是,两个不同的URL与同一个控制器通信,它们应该根据URL转到两个不同的页面,即page1或page2。 这两个页面具有相同的模型对象,它们几乎相同,除了一些小的UI更改。如何在SpringMVC中巧妙地实现这一点

@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); 
}
一种选择:

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

谢谢您的输入。第二种方法似乎确实存在一些安全问题,传统方法更好。