校验
第一步:pom.xml添加
javax.validation
validation-api
1.1.0.Final
org.hibernate
hibernate-validator
5.1.0.Final
org.hibernate
hibernate-validator-annotation-processor
5.1.0.Final
第二步:新建validation.properties文件,这个是作为全局设置的
第三步:在applicationContext.xml中
第五步:新建分组接口AdvisoryValid,(用于当一个实体类需要校验的字段过多时,但是在某个controller类中又不需要所有的属性都校验)
public interface AdvisoryValid {
}
第六步:在pojo类中需要校验的属性进行设置
@NotNull(message = "咨询人advisoryId为空",groups = {AdvisoryValid.class})
private Integer advisoryId; //咨询id
private String advisoryName; //咨询人姓名
@NotEmpty(message = "咨询人电话不能为空",groups = {AdvisoryValid.class})
@Pattern(regexp = "^[1][3,4,5,7,8][0-9]{9}$",message = "咨询人电话格式不正确",groups = {AdvisoryValid.class})
private String advisoryPhone; //咨询人电话
@NotEmpty(message = "老人姓名不能为空",groups = {AdvisoryValid.class})
@Size(min=1,max=20,message = "老人姓名长度最小为1,最大为20",groups = {AdvisoryValid.class})
第六步:在controller类中使用校验@validated
@Authorization
@ResponseBody
@RequestMapping(value = "/advisoryAdd" , method = RequestMethod.POST)
public JsonResult advisoryAdd(@Validated(value = {AdvisoryValid.class}) Advisory advisory , BindingResult br){
String [] validateParam = {"advisoryPhone","oldName"};
Map errorMap = ValidateUtil.getErrorMap(br, validateParam);
if(errorMap != null && errorMap.size() != 0){
/* 返回参数校验错误详情 */
return new JsonResult(false, "添加拜访记录参数错误", errorMap);
}
int n = advisoryService.insert(advisory);
if(n <= 0){
return new JsonResult(false,"添加失败",n);
}
return new JsonResult(true,"添加成功",n);
}
注意点:validated和BindingResult是成对出现的
validateParam只需要写出该controller方法需要进行校验的属性,不需要列出实体类中进行注解的所有属性
message可以是对应的配置文件里面的属性值(message="{oldman.name.empty}"),
也可以自己定义,eg:message="手机号格式不正确"