SpringMVC标签库:errors标签

SpringMVC的errors标签是对应于SpringMVC的Errors对象的,他的作用就是显示Errors对象中包含的错误信息。如果Errors不为null,则会渲染一个HTML的span元素,用来显示错误信息。
属性 描述
cssClass 定义要应用到被渲染的errors元素CSS类
cssStyle 定义要应用到被渲染的errors元素的CSS样式
htmlEscape 是否对HTML进行转义
delimiter 定义两个input元素之间的分隔符,默认没有分隔符
path 要绑定的属性路径
利用errors标签来显示Errors时,是通过errors标签的path属性绑定一个错误信息实现的,可以通过path属性来显示两种类型的错误信息。
(1)所有的错误信息,这个时候path的值应该设置为*
(2)当前对象的某一个属性的错误信息,这个时候path的值应为所需显示的属性的名称。
示例:errors标签的使用
1.模型
public class User implements Serializable
{
private String username;
private String sex;
private String age;
public User()
{
super();
}
…

2.验证器

public class UserValidator implements Validator
{
@Override
public boolean supports(Class<?> clazz)
{
return User.class.equals(clazz);
}
@Override
public void validate(Object object,Errors errors)
{
//验证username,sex,age是否为null
ValidationUtils.rejectIfEmpty(errors, "username", null,"用户名不能为空");
ValidationUtils.rejectIfEmpty(errors, "sex", null,"性别不能为空");
ValidationUtils.rejectIfEmpty(errors, "age", null,"年龄不能为空");
}

3.控制器

@Controller
public class UserController
{
@RequestMapping("/registerForm")
public String registerForm(
Model model
)
{
User user = new User();
model.addAttribute("user", user);
return "registerForm";
}
@InitBinder
public void initBinder(DataBinder binder)
{
//设置验证的类为UserValidator
binder.setValidator(new UserValidator());
}
@PostMapping(value="/register")
public String register(
@Validated User user,
Errors errors
)
{
//如果Errors对象有Field错误,则重新跳回注册页面,否则正常提交
if(errors.hasFieldErrors()) return "registerForm";
return "submit";
}
}

4.视图

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<form:form modelAttribute="user" method="post" action="register">
姓名<form:input path="username" />
<h4><form:errors path="username" /></h4>
<br>
性别<form:input path="sex" />
<h4><form:errors path="sex" /></h4>
<br>
年龄<form:input path="age" />
<h4><form:errors path="age" /></h4>
<input type="submit" />
</form:form>