JSR 303中定义了一套可标注在成员变量,属性方法上的校验注解
- @Null:验证对象是否为空
- @NotNull:验证对象是否不为空,无法检查长度为0的字符串,用于验证基本数据类型
- @AssertTure:验证Boolean对象是否为true
- @AssertFalse:验证Boolean对象是否为false
- @Max(value):验证Number和String对象是否小于等于指定的值
- @Min(value):验证Number和String对象是否大于等于指定的值
- @DecimalMax、@DecimalMin、@Digits、@Size、@Past、@Future、@Pattern
Hibernate Validator是JSR 303的一个参考实现,除了支持所有标准的校验还扩展了如下注解:
@NotBlank、@URL、@Email、@CreditCardNumber、@Length、@NotEmpty、@Range
示例
前端代码
<form:form modelAttribute="user" method="post" action="login">
<table>
<tr>
<td>登录名:</td>
<td><form:input path="loginname"></td>
<td><form:errors path="loginname" cssStyle="color:red"></td>
</tr>
</table>
</form:form>
后端代码
public class User implements Serializable{
@NotBlank(message="登录名不能为空")
private String loginname;
}
@Controller
public class UserController{
@RequestMapping(value="/{formname}")
public String loginForm(
@PathVariable String formName,
Model model){
User user = new User();
model.Attribute("user", user);
//动态跳转页面
return formName;
}
//数据校验使用@Valid,后面跟着Errors对象保存校验信息,根据是否有错误决定跳转哪个页面
@RequestMapping(value="login", method=RequestMethod.POST)
public String login(
@Valid @ModelAttribute User user,
Errors errors,
Model model){
logger.info(user);
if(errors.hasErrors()){
return "registerForm";
}
model.addAttribute("user", user);
return "success";
}
}
网友评论