valid 校验方式
校验参数方法:
1.最简单的方式是,使用Java bean注解校验(如 @NotEmpty。。。)
2.适合复杂点的自定义校验(推荐)
2.1 先定义一个校验接口:
public interface ValidationHandler {
/**
* 校验pojo的属性
* @return 通过/不通过
*/
boolean isValid();
}
2.2 pojo实现接口ValidationHandle,编写校验逻辑
public class UserVo implements ValidationHandler {
private String username;
private Integer age;
@Override
public boolean isValid() {
return StringUtils.isNotEmpty(username)
&& age > 0
&& age < 100;
}
}
2.3 切面,此处切点使用注解:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ParamValidation{
}
2.4 在service中使用
@Service
public class UserService{
@ParamValidation
public void addUser(UserVo user){
//业务操作
}
}
2.5 具体切面代码
@Component
@Aspect
public class ParamValidator{
@Pointcut("@annotation(com.ex.validator.ParamValidation)")
public void validate(){ }
@Before("validate()")
public void before(JoinPoint point){
for (Object arg : joinPoint.getArgs()) {
if (arg instanceof ValidationHandler) {
if (!((ValidationHandler) arg).isValid()) {
throw new IllegalArgumentException("参数校验不通过");
}
}
}
}
}
3.简单实用版(极力推荐)
3.1 在实体中,加上一个校验方法,此方法加上注解@AssetTure
public class UserVo {
private String username;
private Integer age;
@AssertTrue
public boolean isValid() {
return StringUtils.isNotEmpty(username)
&& age > 0
&& age < 100;
}
}
3.2 在service类上加上@Validated,参数前加上@Valid
@Validated //打开校验开关
@Service
public class UserService {
// 入参pojo添加@Valid
public void addUser(@Valid UserVo userVo) {
// 业务逻辑操作
}
}
valid 校验方式的更多相关文章
- 卷积运算的本质,以tensorflow中VALID卷积方式为例。
卷积运算在数学上是做矩阵点积,这样可以调整每个像素上的BGR值或HSV值来形成不同的特征.从代码上看,每次卷积核扫描完一个通道是做了一次四重循环.下面以VALID卷积方式为例进行解释. 下面是pyth ...
- 简单去除exe自校验方式
简单去除exe自校验方式 一. 自校验定义: 这些程序会检查自己有没有被修改,如果发现被修改的话,便会离开或进行其它动作.基本的校检方法包括 checksum, 检查大小, 检查跳转代码,等 ...
- MVC校验方式【六】
一.以往的校验都是自己写正则表达式校验,本篇讲的是通过MVC自带的jquery文件进行校验 实现步骤:1. 在webform页面中引入两个jquery文件,10,11行的代码. <%@ Page ...
- springboot使用hibernate validator校验方式
一.参数校验 在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动 方法内代码显得冗长 每次要 ...
- Struts 2 数据校验要用到的类和两种校验方式以及一些校验问题的解决
通过继承ActionSupport类来完成Action开发,ActionSupport类不仅对Action接口进行简单实现, 同时增加了验证.本地化等支持 .真实开发中自定义Action都需要继承该类 ...
- @Validated和@Valid校验参数、级联属性、List
@Validated和@Valid的区别 在Controller中校验方法参数时,使用@Valid和@Validated并无特殊差异(若不需要分组校验的话): @Valid:标准JSR-303规范的标 ...
- spring 使用@Valid校验数据出错DEBUG org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod - Failed to resolve argument 0 of type
问题原因:在 @Valid 的那个参数后面紧跟着一个 BindingResult 的参数(一定要紧跟着) 参考来源:https://segmentfault.com/q/101000000838468 ...
- @RequestBody配合@Valid 校验入参参数
自定义一个Controller import com.example.demo.pojo.User; import org.springframework.web.bind.annotation.Po ...
- ng-messages AngularJs 表单校验方式
最新研究了一下表单校验,直接上代码. <!DOCTYPE html><html ng-app='app'><head> <meta charset=" ...
随机推荐
- C#批量入库
public static void BulkCopyToDB(DataTable dt, string conn, string tableName, out string msg) { msg = ...
- Web容器与Servlet
转自:http://www.360doc.com/content/10/0713/20/495229_38798294.shtml Web服务器与Web应用层属于不容两个范畴,为了让他们两写作,首先应 ...
- (N)IO Frameworks in Java
(N)IO Frameworks in Java – Thread.currentThread.join() https://www.ashishpaliwal.com/blog/2008/10/ni ...
- multi-paradigm
w范式 https://developer.mozilla.org/en-US/docs/Web/JavaScript https://developer.mozilla.org/zh-CN/docs ...
- python(五)常用模块学习
版权声明:本文为原创文章,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明. https://blog.csdn.net/fgf00/article/details/52357 ...
- python 时间与时间戳之间的转换
https://blog.csdn.net/kl28978113/article/details/79271518 对于时间数据,如2016-05-05 20:28:54,有时需要与时间戳进行相互的运 ...
- git学习——<二>git配置文件
一.git所有配置文件 <一>./etc/gitconfig全局配置文件 修改该配置文件,会对所有用户有影响. 使用git config --system来配置该文件 <二>. ...
- Mysql2索引
索引分类: 作用:优化查询,select查询有三种情况:缓存查询(不在mysql中进行数据查询),全表查询,索引扫描 Btree(btree b+tree b*tree) Rtree HASH Ful ...
- Python多线程、多进程和协程的实例讲解
线程.进程和协程是什么 线程.进程和协程的详细概念解释和原理剖析不是本文的重点,本文重点讲述在Python中怎样实际使用这三种东西 参考: 进程.线程.协程之概念理解 进程(Process)是计算机中 ...
- 基于rman的坏块恢复
转载请注明出处 http://blog.csdn.net/guoyjoe/article/details/30965303 实验过程例如以下: 1.使用rman备份全库 Recovery Mana ...