在Spring MVC中,请定义一个表单,用于注册员工的信息,属性包括:姓名、生日、入职日期、电话、备用电话等,其实,属性的验证规则如下: 姓名:必填,长度在6~10个之间 生日:必须是正确的日期格式,而且早于当前时间 入职日期:必填 电话:只能是手机号码 备用电话:只能是座机号码 请使用Validation框架完成此功能。
时间: 2024-03-08 18:50:06 浏览: 19
好的,根据您的要求,我来为您提供一个Spring MVC中的表单,用于注册员工的信息,并且使用Validation框架完成属性验证规则:
```java
import java.util.Date;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
public class Employee {
@Length(min = 6, max = 10, message = "姓名长度必须在6~10个字符之间")
private String name;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Past(message = "生日必须早于当前时间")
private Date birthday;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@NotNull(message = "入职日期不能为空")
private Date hireDate;
@Pattern(regexp = "^1[3456789]\\d{9}$", message = "电话号码格式不正确")
private String phone;
@Pattern(regexp = "^0\\d{2,3}-\\d{7,8}$", message = "备用电话号码格式不正确")
private String backupPhone;
// getter and setter methods
}
```
在Controller中,我们需要加入`@Valid`注解来启用Validation框架对表单数据的验证,同时使用`BindingResult`对象来存储验证结果。
```java
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/employee")
public class EmployeeController {
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String register(Model model) {
model.addAttribute("employee", new Employee());
return "employee/register";
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(@Valid Employee employee, BindingResult result) {
if (result.hasErrors()) {
return "employee/register";
}
// 保存员工信息
return "redirect:/employee/list";
}
}
```
在JSP页面中,我们需要使用Spring的`<form:form>`标签来渲染表单,并且使用`<form:errors>`标签来渲染错误信息。
```jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<form:form method="post" modelAttribute="employee">
<table>
<tr>
<td><label for="name">姓名:</label></td>
<td><form:input path="name" id="name" /></td>
<td><form:errors path="name" cssClass="error" /></td>
</tr>
<tr>
<td><label for="birthday">生日:</label></td>
<td><form:input path="birthday" id="birthday" /></td>
<td><form:errors path="birthday" cssClass="error" /></td>
</tr>
<tr>
<td><label for="hireDate">入职日期:</label></td>
<td><form:input path="hireDate" id="hireDate" /></td>
<td><form:errors path="hireDate" cssClass="error" /></td>
</tr>
<tr>
<td><label for="phone">电话:</label></td>
<td><form:input path="phone" id="phone" /></td>
<td><form:errors path="phone" cssClass="error" /></td>
</tr>
<tr>
<td><label for="backupPhone">备用电话:</label></td>
<td><form:input path="backupPhone" id="backupPhone" /></td>
<td><form:errors path="backupPhone" cssClass="error" /></td>
</tr>
</table>
<button type="submit">提交</button>
</form:form>
```
注意,在JSP页面中的`<form:input>`标签会自动根据属性类型进行数据绑定,而且我们在Employee类中使用了`@DateTimeFormat`注解来指定日期类型的格式化方式。