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