博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目参数校验并抛出统一异常
阅读量:2240 次
发布时间:2019-05-09

本文共 1813 字,大约阅读时间需要 6 分钟。

实现步骤:

1.在dto中使用注解做参数校验,并且为参数添加get set方法,这是必须的,例如

org.projectlombok
lombok
1.18.4

在这里插入图片描述

2.在controller中,为接口方法需要校验的参数加上@Valid注解,并添加一个参数BindingResult紧跟在@Valid注解的参数后面,如果有多个参数加了@Valid,就有多个BindingResult。

在这里插入图片描述
3.编写一个切面类去统一处理返回的结果

org.springframework.boot
spring-boot-starter-aop

在这里插入图片描述

package com.nelson.edu.aspect;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;import org.springframework.validation.ObjectError;@Aspect@Componentpublic class ValidateAspect {    @Pointcut("execution(public * com.nelson..edu.controller.*.*(..))")    public void validate() {    }    @Around("validate()")    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {        BindingResult bindingResult = null;        Object[] args = joinPoint.getArgs();        if (args != null && args.length != 0) {            for (Object object : args) {                if (object instanceof BindingResult) {                    bindingResult = (BindingResult) object;                    break;                }            }        }        if (bindingResult != null && bindingResult.hasErrors()) {            StringBuffer sb = new StringBuffer();            for (ObjectError objectError : bindingResult.getAllErrors()) {                sb.append(((FieldError) objectError).getField() + " : ").append(objectError.getDefaultMessage() + ",");            }            sb.deleteCharAt(sb.length() - 1);            return sb.toString();        }        return joinPoint.proceed();    }}

转载地址:http://crqbb.baihongyu.com/

你可能感兴趣的文章
JTS Geometry关系判断和分析
查看>>
阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了
查看>>
Intellij IDEA 使用技巧一
查看>>
IDEA 护眼色设置 背景行颜色取消等设置
查看>>
idea如何显示git远程与本地的更改对比?
查看>>
Git 分支 - 分支的新建与合并
查看>>
git创建与合并分支
查看>>
23种设计模式介绍以及在Java中的实现
查看>>
如何把本地项目上传到Github
查看>>
Git的使用--如何将本地项目上传到Github
查看>>
zookeeper客户端命令行查看dubbo服务的生产者和消费者
查看>>
intellij idea 相关搜索快捷键
查看>>
oracle查看数据库连接池中最大连接数和当前用户连接数等信息
查看>>
oracle中创建同义词(synonyms)表
查看>>
建立DB-LINK和建立视图
查看>>
普通视图和物化视图的区别(转)
查看>>
物化视图加DBLINK实现数据的同步_20170216
查看>>
Redis在京东到家的订单中的使用
查看>>
idea 注释模板设置
查看>>
单例模式singleton为什么要加volatile
查看>>