【问题标题】:Spring MVC multiple @RequestMappingsSpring MVC 多个@RequestMappings
【发布时间】:2012-08-16 05:13:54
【问题描述】:

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

【问题讨论】:

    标签: spring-mvc


    【解决方案1】:

    一个选项:

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

    【讨论】:

    • 感谢您的意见。第二种方法似乎确实存在一些安全问题,传统方法更好。
    猜你喜欢
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2017-06-26
    • 2012-07-06
    • 2011-08-26
    相关资源
    最近更新 更多