校验
第一步:pom.xml添加
<!-- 数据校验 -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>5.1.0.Final</version>
</dependency>
第二步:新建validation.properties文件,这个是作为全局设置的
第三步:在applicationContext.xml中
<context:property-placeholder
location="classpath*:jdbc.properties,
classpath*:redis.properties,
classpath:validation.properties,
classpath:httpclient.properties"/>
第五步:新建分组接口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<Advisory> advisoryAdd(@Validated(value = {AdvisoryValid.class}) Advisory advisory , BindingResult br){
String [] validateParam = {"advisoryPhone","oldName"};
Map<String, String> 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="手机号格式不正确"