在实体字段加注解:

/**
* 机构名称
*/
@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比较灵活。

javax.validation参数校验的更多相关文章

  1. SpringBoot Validation参数校验 详解自定义注解规则和分组校验

    前言 Hibernate Validator 是 Bean Validation 的参考实现 .Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的 ...

  2. SpringBoot - Bean validation 参数校验

    目录 前言 常见注解 参数校验的应用 依赖 简单的参数校验示例 级联校验 @Validated 与 @Valid 自定义校验注解 前言 后台开发中对参数的校验是不可缺少的一个环节,为了解决如何优雅的对 ...

  3. spring boot validation参数校验

    对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证. Spring Boot自身对数据在服务端的校验有一个比较好的支持,它能将 ...

  4. Java web服务端参数校验Javax.validation (springboot)

    一.基本使用 Javax.validation是spring集成自带的一个参数校验接口.可通过添加注解来设置校验条件. 下面以springboot项目为例进行说明.创建web项目后,不需要再添加其他的 ...

  5. Java Bean Validation(参数校验) 最佳实践

    转载来自:http://www.cnblogs.com 参数校验是我们程序开发中必不可少的过程.用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操作,保持程序的 ...

  6. Java参数校验工具validation实践

    介绍 在项目开发当中,数据校验是你必须要考虑和面对的事情,为此要写上一大串的代码进行校验,这样就会导致代码冗余和一些管理的问题. 例如下面的代码: public void push(List<L ...

  7. Spring Validation最佳实践及其实现原理,参数校验没那么简单!

    之前也写过一篇关于Spring Validation使用的文章,不过自我感觉还是浮于表面,本次打算彻底搞懂Spring Validation.本文会详细介绍Spring Validation各种场景下 ...

  8. 利用 Bean Validation 来简化接口请求参数校验

    团队新来了个校招实习生静静,相互交流后发现竟然是我母校同实验室的小学妹,小学妹很热情地认下了我这个失散多年的大湿哥,后来... 小学妹:大湿哥,咱们项目里的 Controller 怎么都看不到参数校验 ...

  9. SpringBoot Validation优雅的全局参数校验

    前言 我们都知道在平时写controller时候,都需要对请求参数进行后端校验,一般我们可能会这样写 public String add(UserVO userVO) { if(userVO.getA ...

随机推荐

  1. mysql(8.0.*版本 windows10 )忘记密码解决方案

    安装完mysql-8.0.13-winx64后,一些列的安装命令过后再执行mysql -uroot -p之后 报错了 what fuck 什么鬼,就是这个错 ERROR (): Access deni ...

  2. mysql中间件研究(tddl atlas cobar sharding-jdbc)

    mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差.下面介绍几款能代替其的mysql开源中间件产品,Atlas ...

  3. JS中浮点数相加问题

    https://blog.csdn.net/u012937029/article/details/61191512 采用IEEE 754 Floating-point的浮点数编码方式来表示浮点数 按I ...

  4. MeayunDB-高性能分布式内存数据库

    MeayunDB(www.meayun.com)是一款分布式的NoSQL列式内存数据库,由C#编写,主要为高性能,高并发,高可伸缩及大数据系统提供技术解决方案.基于MeayunDB,可以简单,快速的构 ...

  5. Java学习进阶—高级编程

    当你已经熟练的掌握了面向对象中的各种概念后,是否会对这些知识是如何使用的产生浓厚的兴趣?本课程主要针对于已经掌握了JAVA核心开发技术的读者准备,讲解了JAVA多线程.常用类库.IO编程.网络编程.类 ...

  6. BZOJ4545: DQS的trie 广义后缀自动机_LCT

    特别鸣神犇 fcwww 替我调出了无数个错误(没他的话我都快自闭了),祝大佬省选rp++ 板子题,给我写了一天QAQ...... 用 LCT 维护后缀树,暴力更新用 LCT 区间更新链即可 其实,在计 ...

  7. 2、Attentive Group Recommendation----注意力集中的群组推荐

    1.摘要: 采用attention和NCF结合解决群组偏好融合的问题. 贡献: 第一个使用神经网络学习融合策略的组推荐. 进一步整合用户-项目交互改进组推荐,减轻冷启动问题. 2.方法: 模型AGRE ...

  8. Linux下pyftplib简单的脚本

    from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyf ...

  9. V4L2驱动程序架构

    1 V4L2简介 video4linux2(V4L2)是Linux内核中关于视频设备的内核驱动,它为Linux中视频设备访问提供了通用接口,在Linux系统中,V4L2驱动的Video设备节点路径通常 ...

  10. [luogu] P4040 [AHOI2014/JSOI2014]宅男计划(贪心)

    P4040 [AHOI2014/JSOI2014]宅男计划 题目背景 自从迷上了拼图,JYY就变成了个彻底的宅男.为了解决温饱问题,JYY不得不依靠叫外卖来维持生计. 题目描述 外卖店一共有N种食物, ...