javax.validation参数校验
2018-06-14 14:08
351 查看
在实体字段加注解:
/** * 机构名称 */ @ApiParam(name = "orgName", value = "机构名称") @Size(max = 40,message = "机构名称长度不能超过40!") @FieldName(desc = "机构名称") private String orgName;
说明:@Size是javax.validation中的注解。还有其他注解可参考javax.validation的所有注解。
注意:
1.字段有值校验;没值不校验。当我们只校验一个实体的一部分字段,只要保证另一部分字段值为空就可以了。
2.@Valid校验;工具类校验。
代码:
1.@Valid校验作用在方法头上
@RequestMapping(value = "/saveInsuredForDomestic",method = RequestMethod.POST) @ApiOperation(value = "保存被保险人(国内)", httpMethod = "POST", response = BaseResponse.class,notes = "保存被保险人") @ResponseBody public BaseResponse saveInsuredForDomestic(HttpServletRequest request,@ApiParam(name = "被保险人") @ModelAttribute("insuredDomesticParam") @Valid InsuredDomesticParam insuredDomesticParam){ ... }
这种方式校验在进入方法之前就对实体中的字段进行了校验。
2.手动校验:
// 参数类型校验 List<String> validateError = VlidationUtil.validate(prodEverydayTaskPO); if(validateError != null && validateError.size() > 0){ return Pair.of(false,validateError.get(0)); }
工具类VlidationUtil:
package com.product.util; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; import javax.xml.bind.ValidationException; /** * 校验工具类 * VlidationUtil * @author: liuyachao * 2018/6/6 11:11 */ public class VlidationUtil { private static Validator validator; static { ValidatorFactory vf = Validation.buildDefaultValidatorFactory(); validator = vf.getValidator(); } /** * javax.validation注解校验 * @throws ValidationException * @throws ValidationException * @Description: 校验方法 * @param t 将要校验的对象 * @throws ValidationException * void * @throws */ public static <T> List<String> validate(T t){ Set<ConstraintViolation<T>> set = validator.validate(t); List<String> validateError = new ArrayList<>(); if(set.size()>0){ for(ConstraintViolation<T> val : set){ validateError.add(val.getMessage()); } } return validateError; } /** * 是否正整数 * @param str * @return */ public static boolean isPositiveInteger(String str){ boolean flag=false; try{ String regex="^[1-9]+[0-9]*$"; Pattern p=Pattern.compile(regex); Matcher m=p.matcher(str); if(m.find()){ return true; } }catch(Exception e){ e.printStackTrace(); } return flag; } }
此种方式校验可在代码里面任何地方进行校验。相对于@Valid比较灵活。
相关文章推荐
- 如何使用java validation api进行参数校验
- javax.validation.ConstraintViolationException---Hibernate后台实体校验
- Hibernate-Validation参数校验
- Spring4新特性—集成Validation进行参数校验
- SpringMVC中Controller使用Validation的参数校验和统一处理参数异常
- JAVA参数验证 Validation(二)分组校验&自定义校验
- spring项目使用hibernate validator 校验请求参数报错 java.lang.NoClassDefFoundError: javax/el/PropertyNotFoundExce
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
- JAVA字段校验(validation)
- jquery.form.js+jquery.validation.js实现表单校验和提交
- javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'org
- Spring MVC 参数校验
- enableEventValidation 回发或回调参数无效 的解决办法
- SpringMVC验证框架Validation自定义注解实现传递参数到国际化资源文件
- 回发或回调参数无效。在配置中使用...pages enableEventValidation="true"/>
- javax.validation.ValidationException: HV000183: Unable to load 'javax.el.ExpressionFactory'. Check t
- Spring MVC 参数校验
- 个人认为不错的代码结构:利用switch case语句进行参数的取值校验
- javax validation--参数基础校验
- Struts2---请求参数校验