【问题标题】:How do I map different values for a parameter in the same @RequestMapping in Spring MVC?如何在 Spring MVC 中的同一 @RequestMapping 中为参数映射不同的值?
【发布时间】:2011-02-03 13:59:21
【问题描述】:

假设我有:

@RequestMapping(params = "action=nuovoprodotto")    
    public ModelAndView nuovoProdotto(
            @RequestParam(value = "page", required = false, defaultValue = "-1") int page,
            @RequestParam(value = "action") String action,
            @ModelAttribute Prodotto prod, HttpSession session)
            throws Exception {

是否可以将此请求映射到喜欢的“action”参数的两个或三个值?

我尝试了很多方法,比如

@RequestMapping(params = "action=nuovoprodotto, action=salvaprodotto")  

@RequestMapping(params = "action=nuovoprodotto|salvaprodotto")  

但它们不起作用...如果我不能,除了为每个参数值组合编写一个处理程序之外,还有什么解决方案?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    试试这个:

    @RequestMapping(params = {"action=nuovoprodotto","action=salvaprodotto"})
    

    params 属性实际上是String[] 类型,但是注释可以让你写一个String 来代替单个元素String[],所以这两个是等价的:

    @RequestMapping(params = {"action=nuovoprodotto"})
    

    @RequestMapping(params = "action=nuovoprodotto")
    

    参考:


    更新:我的错,正如您在 Advanced @RequestMapping options 部分中所读到的,多个参数使用 and、not or 组合,因此它不能按上面指定的那样工作。

    所以我想说你要做的是创建一个具有几乎相同签名的别名方法:

    @RequestMapping(params = "action=nuovoprodotto")    
    public ModelAndView nuovoProdotto(
            @RequestParam(value = "page", required = false, defaultValue = "-1") int page,
            @RequestParam(value = "action") String action,
            @ModelAttribute Prodotto prod, HttpSession session)
            throws Exception {
            // some stuff here
    }
    
    @RequestMapping(params = "action=salvaprodotto")    
    public ModelAndView salvaProdotto(
            @RequestParam(value = "page", required = false, defaultValue = "-1") int page,
            @RequestParam(value = "action") String action,
            @ModelAttribute Prodotto prod, HttpSession session)
            throws Exception {
    
            return nuovoProdotto(page, action, prod, session);
    }
    

    【讨论】:

    • 您提出的解决方案是我最终使用的显而易见的解决方案。无论如何感谢你的努力:)
    猜你喜欢
    • 2013-08-02
    • 2019-01-07
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    相关资源
    最近更新 更多