如果想要实现数据校验,需要导入hibernate-validator-5.2.4.Final.jar,validation-api-1.1.0.Final.jar,jboss-logging-3.2.1.Final.jar,classmate-1.1.0.jar这四个包,
在sping配置文件中配置org.springframework.format.support.FormattingConversionServiceFactoryBean,因为<mvc:annotation-driven/>标签内部默认创建的ConversionService实例就是一个FormattingConversionServiceFactoryBean,所以只需要使用标签<mvc:annotation-driven />就可以了。
然后在需要校验的Bean字段上引用需要的标签如下:
package com.createnets.springmvc.core;
import java.io.Serializable;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
public class User implements Serializable {
@Length(min=2,max=6,message="用户信息错误,我滴天哪")
private String name;
@Email(message="email错误,我滴天哪")
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [emil=" + email + ", name=" + name + "]";
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
之后在Controller类方法中使用@valid标签,如下
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/add")
public String add(@Valid User user, BindingResult result) {
if(result.hasErrors()) {
return "user/add";
}
return "user/add";
}
}
最后在页面显示校验错误信息如下
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head>
<body>
11学生表单:<br>
<form:form action="teacher/add.html" modelAttribute="model" >
<form:errors path="*"></form:errors>
<input type="hidden" name="id" value="1" />
<table style="border:1px solid red;margin-left: 100px;">
<tr>
<td>
学生姓名
</td>
<td>
<form:errors path="name"></form:errors>
<input type="text" name="name" />
</td>
</tr>
<tr>
<td>
年龄
</td>
<td>
<input type="text" name="age" />
</td>
</tr>
<tr>
<td colspan="2" align="center" valign="middle">
<input type="submit" value="添加学生"/>
</td>
</tr>
</table>
</form:form>
</body>
</html>
注意modelAttribute="model" ,<form:errors path="*"></form:errors>,<form:errors path="name"></form:errors>
错误显示如下