2012-08-16 49 views
1

我正在使用UrlBasedViewResolver。我的要求是两个不同的URl与同一个控制器交谈,他们应该根据URL转到两个不同的页面aka page1或page2。 这两个页面具有相同的模型对象,它们几乎是相同的,只有少数小的UI更改。这在Spring MVC中如何能够整齐地实现。Spring MVC multiple @RequestMappings

@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); 
} 

回答

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; 
} 

第二个选项可能在试图基于视图返回根据控制器的映射的一些问题,以及一些潜在的安全问题在传入的网址上。

+0

感谢您的输入。第二种方法似乎有一些安全问题,传统方法更好。 – spal 2012-08-16 14:48:45