Thymeleaf一种形式的多个提交按钮


问题内容

我有一个带有一个表单和2个按钮的HTML页面片段:

<form action="#" data-th-action="@{/action/edit}" data-th-object="${model}" method="post">
    <button type="submit" name="action" value="save">save</button>
    <button type="submit" name="action" value="cancel">cancel</button>
</form>

和控制器:

@RequestMapping(value="/edit", method=RequestMethod.POST)
public ModelAndView edit(@ModelAttribute SomeModel model, 
        @RequestParam(value="action", required=true) String action) {

    if (action.equals("save")) {
        // do something here     
    }

    if (action.equals("cancel")) {
       // do another thing
    }
    return modelAndView;
}

这项工作很好,但是如果我有更多按钮,则必须添加更多if语句以检查action字符串。我还有另一种方法可以为表单中的 每个按钮* 创建
一个动作 吗?
*


问题答案:

您可以@RequestMappings使用params变量创建不同的单独方法。

@RequestMapping(value="/edit", method=RequestMethod.POST, params="action=save")
public ModelAndView save() {}


@RequestMapping(value="/edit", method=RequestMethod.POST, params="action=cancel")
public ModelAndView cancel() {}