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上获得。
0 评论