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*
    }
相关推荐
zx_zx_1232 分钟前
线程的学习
java·开发语言·学习
司铭鸿8 分钟前
Java响应式编程:Project Reactor与WebFlux高并发实践
java·开发语言·算法·职场和发展·生活
飞翔的佩奇9 分钟前
Java项目:基于SSM框架实现的学生二手书籍交易平台管理系统【ssm+B/S架构+源码+数据库+毕业论文+答辩PPT+任务书+开题】
java·数据库·mysql·架构·毕业设计·毕业论文·二手书籍
七七&55615 分钟前
Spring Boot 常用注解整理
java·spring boot·后端
北京_宏哥21 分钟前
🔥《刚刚问世》系列初窥篇-Java+Playwright自动化测试-21- 操作鼠标拖拽 - 中篇(详细教程)
java·前端·面试
程序员小假23 分钟前
说一说 @Autowired 注解实现原理
java·后端
我叫小白菜24 分钟前
【Java_EE】设计模式
java·开发语言·设计模式
程序员岳焱26 分钟前
SpringMVC 开发避坑指南:十大常见问题深度解析与解决方案
java·后端·spring
肖哥弹架构1 小时前
图解Mycat 5大核心设计功能+业务场景实战案例
java·数据库·后端
SoFlu软件机器人1 小时前
需求迷雾中挣扎?飞算 JavaAI 助你精准破局
java·开发语言·数据库·人工智能