百里香多提交按钮在一个表单中

2022-09-01 07:30:04

我有一个HTML页面的片段,其中包含一个表单和2个按钮:

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

这很好,但是如果我有更多的按钮,我必须添加更多语句来检查字符串。有没有另一种方法可以为表单中的每个按钮创建一个操作ifaction


答案 1

您可以使用参数变量创建具有不同方法的单独方法。@RequestMappings

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


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

答案 2

这在我的问题中起作用。使用 th:formaction on submit 按钮 这是关于您有多少个提交按钮的工作,这对于提供更多链接到具有不同提交按钮的表单的链接也很有用

<form action="#"  class="form" th:action="@{'/publish-post/'+${post.id}}" method="post">
<input class="savebtn" type="submit" value="Save" th:formaction="'/save-post/'+${post.id}">
<input class="publish" type="submit" value="Publish Article">
</form>

推荐