Spring MVC Thymeleaf在一个表单中的多个提交按钮

今天遇见一个form需要两个button提交显示不同Controller的需求

一开始解决思路:


我有一个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;
}

后来网上查阅大牛的思路:


您可以使用params变量创建具有不同@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() {}

使用th:formactionon submit button这是工作在多少你有submit button和这也是usefull给予更多的链接到一个表单与不同的submit button

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

对于多个提交按钮,下面的方法对我很有效。* 注意:th:取消按钮中的格式操作。*

<form action="#" th:action="@{/saveProducts}" th:object="${model}" method="post">
  <button type="submit" name="action" value="cancel" th:formaction="@{/cancelProducts}">CANCEL</button>
  <button type="submit" name="action" value="save">SAVE</button>
</form>

对于控制器:

@RequestMapping(value="/saveProducts", method= RequestMethod.POST)
    public String save(@ModelAttribute SomeModel model) {
      *//Do something*
    }
    @RequestMapping(value="/cancelProducts", method=RequestMethod.POST)
    public String cancel(@ModelAttribute SomeModel model) {
      *//Do something*
    }
相关推荐
积水成江1 小时前
Vite+Vue3+SpringBoot项目如何打包部署
java·前端·vue.js·windows·spring boot·后端·nginx
CocoaAndYy2 小时前
ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal原理及Demo
java·jvm·算法
2401_857439693 小时前
SpringBoot在线教育平台:设计与实现的深度解析
java·spring boot·后端
总是学不会.4 小时前
SpringBoot项目:前后端打包与部署(使用 Maven)
java·服务器·前端·后端·maven
IT学长编程4 小时前
计算机毕业设计 视频点播系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·视频点播系统
一 乐5 小时前
英语词汇小程序小程序|英语词汇小程序系统|基于java的四六级词汇小程序设计与实现(源码+数据库+文档)
java·数据库·小程序·源码·notepad++·英语词汇
曳渔5 小时前
Java-数据结构-反射、枚举 |ू・ω・` )
java·开发语言·数据结构·算法
laocooon5238578865 小时前
java 模拟多人聊天室,服务器与客户机
java·开发语言
风槐啊5 小时前
六、Java 基础语法(下)
android·java·开发语言
苹果醋35 小时前
毕业设计_基于SpringBoot+vue的社区博客系统【源码+SQL+教程+可运行】41002
java·毕业设计·博客