表單上的多個提交按鈕

    1.概述

    在本快速教程中,我們將以Spring MVC中的表單入門為基礎,並向JSP表單添加另一個按鈕,以映射到相同的URI。

    2.簡短回顧

    之前,我們創建了一個小型Web應用程序來輸入員工的詳細信息並將其保存在內存中。

    首先,我們編寫了一個Employee模型來綁定實體,然後編寫了一個EmployeeController來處理流程和映射,最後編寫了一個名為employeeHome的視圖,該視圖描述了用戶鍵入輸入值的形式。

    該表單只有一個按鈕Submit ,該按鈕映射到名為addEmployee的控制器的RequestMapping以使用該模型將用戶輸入的詳細信息添加到內存數據庫中。

    在接下來的幾節中,我們將看到如何向控制器中具有相同RequestMapping路徑的相同表單添加另一個按鈕Cancel,

    3.表格

    首先,讓我們向employeeHome.jsp表單添加一個新按鈕:

    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
    
     ...
    
     <body>
    
     <h3>Welcome, Enter The Employee Details</h3>
    
     <h4>${message}</h4>
    
     <form:form method="POST" action="${pageContext.request.contextPath}/addEmployee"
    
     modelAttribute="employee">
    
     <table>
    
     ...
    
     <tr>
    
     <td><input type="submit" name="submit" value="Submit" /></td>
    
     <td><input type="submit" name="cancel" value="Cancel" /></td>
    
     </tr>
    
     ...

    如我們所見,我們向現有的Submit按鈕添加了一個屬性name ,並添加了另一個name設置為cancel Cancel按鈕

    我們還在頁面頂部添加了模型屬性message ,如果單擊“ Cancel ,則將顯示該message

    4.控制器

    接下來,讓我們修改控制器以向RequestMapping添加新的屬性param ,以區分兩次單擊按鈕:

    @RequestMapping(value = "/addEmployee", method = RequestMethod.POST, params = "submit")
    
     public String submit(@Valid @ModelAttribute("employee") final Employee employee,
    
     final BindingResult result, final ModelMap model) {
    
     // same code as before
    
     }
    
     @RequestMapping(value = "/addEmployee", method = RequestMethod.POST, params = "cancel")
    
     public String cancel(@Valid @ModelAttribute("employee") final Employee employee,
    
     final BindingResult result, final ModelMap model) {
    
     model.addAttribute("message", "You clicked cancel, please re-enter employee details:");
    
     return "employeeHome";
    
     }

    在這裡,我們增加了一個新的參數params現有的方法**submit** .值得注意的是,它的值與表單中指定的name相同。

    然後,我們添加了另一個具有相似簽名的方法cancel ,唯一的區別是指定為cancel的參數params 。和以前一樣,它與JSP表單中的“ Cancel ”按鈕的name完全相同。

    5.測試

    為了進行測試,我們將項目部署在Web容器(例如Tomcat)上。

    在訪問URL [http://localhost:8080/spring-mvc-forms/employee](http://localhost:8080/spring-mvc-forms/employee) ,我們將看到:

    表單上的多個提交按鈕

    點擊Cancel ,我們將看到:

    表單上的多個提交按鈕

    在這裡,我們看到在控制器的方法cancel編碼的消息。

    點擊Submit ,我們將像以前一樣看到鍵入的員工信息:

    表單上的多個提交按鈕

    六,結論

    在本教程中,我們學習瞭如何在Spring MVC應用程序中向同一表單添加另一個按鈕,該按鈕映射到控制器上的同一RequestMapping

    如果需要,可以使用代碼片段中演示的相同技術添加更多按鈕

    與往常一樣,源代碼可以 在GitHub上獲得