`
zysnba
  • 浏览: 185765 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

校验参数为空

 
阅读更多
1,'org.hibernate.validator:hibernate-validator:6.0.17.Final'导入检验包
2,
  @NotBlank(message = "图片url不能为空")
    private String picUrl;
3,public Result saveObject(@RequestBody @Valid DemoDto dto) {

4,建立全局捕获异常类
package com.exception;


import com.ka.common.api.ResultJson;
import com.ka.common.error.ErrorCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.validation.BindException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
* @description 全局异常
* @author zys
* @date 2022-10-27
*/
@RestControllerAdvice(annotations = RestController.class)
@Slf4j
public class GlobalExceptionHandler {

@ExceptionHandler(value = Exception.class)
public ResultJson errorHandler(HttpServletRequest request, HttpServletResponse response, Exception e)throws Exception{
if (e instanceof BusinessException) {
log.error("BusinessException业务处理异常:\t",e);
return ResultJson.badRequest(ErrorCode.GENERIC_ERROR.getCode(),e.getMessage());
}
if (e instanceof DuplicateKeyException) {
log.error("SQLIntegrityConstraintViolationException业务处理异常:\t",e);
return ResultJson.badRequest(ErrorCode.GENERIC_ERROR.getCode(),"数据重复");
}
if (e instanceof ParamException) {
log.error("ParameterException参数异常:\t",e);
return ResultJson.badRequest(ErrorCode.BIZ_ERROR_PARAMETER.getCode(),e.getMessage());
}
log.error("GlobalExceptionHandler处理异常:\t",e);
return ResultJson.badRequest("系统异常,请稍后再试");
}

/**
* 处理 form data方式调用接口校验失败抛出的异常
* @param e
* @return
*/
@ExceptionHandler(BindException.class)
public ResultJson<?> handleBindException(BindException e) {
List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
/*List<String> collect = fieldErrors.stream()
.map(o -> o.getDefaultMessage())
.collect(Collectors.toList());*/
String collect = fieldErrors.stream()
.map(o -> o.getDefaultMessage())
.collect(Collectors.joining());
return ResultJson.badRequest(ErrorCode.BIZ_ERROR_PARAMETER.getCode(),"参数校验失败,"+ collect);
}


/**
* 处理 json 请求体调用接口校验失败抛出的异常
* @param e
* @return
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResultJson<?> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
/*List<String> collect = fieldErrors.stream()
.map(o -> o.getDefaultMessage())
.collect(Collectors.toList());*/
String collect = fieldErrors.stream()
.map(o -> o.getDefaultMessage())
.collect(Collectors.joining());
return ResultJson.badRequest(ErrorCode.BIZ_ERROR_PARAMETER.getCode(),"参数校验失败,"+ collect);
}

/**
* 处理单个参数校验失败抛出的异常
* @param e
* @return
*/
@ExceptionHandler(ConstraintViolationException.class)
public ResultJson<?> handleConstraintViolationException(ConstraintViolationException e) {
Set<ConstraintViolation<?>> constraintViolations = e.getConstraintViolations();
/*List<String> collect = constraintViolations.stream()
.map(o -> o.getMessage())
.collect(Collectors.toList());*/
String collect = constraintViolations.stream()
.map(o -> o.getMessage())
.collect(Collectors.joining());
return ResultJson.badRequest(ErrorCode.BIZ_ERROR_PARAMETER.getCode(),"参数校验失败,"+ collect);
}


}
分享到:
评论

相关推荐

    多参数校验参数是否为空接口

    多参数校验参数是否为空接口,循环判断多个参数,可以直接使用

    python 多个参数不为空校验方法

    在实际开发中经常需要对前端传递的多个参数进行不为空校验,可以使用python提供的all()函数 if not all([arg1, arg2, arg3]): # 当 arg1, arg2, arg3都不为空时all函数返回true return jsonify(errno=RET.PARAMERR...

    参数校验注解使用指南1

    本文将深入探讨如何使用注解来校验参数的合法性,主要关注`CodePrefix`、`ParamVerify`、`ParamValidator`这三个自定义注解,以及如何在实际应用中引用和使用它们。 首先,我们来看`CodePrefix`注解。这是一个类...

    Spring Boot + validation + AOP 请求参数校验

    Spring Boot + validation + AOP 请求参数校验 一、validation 校验注解 通用 @Null 被注释的属性必须为 null @NotNull被注释的属性必须不为 null @AssertTrue 被注释的属性必须为 true @AssertFalse 被注释的属性...

    excel导入动态校验,自定义注解动态校验

    动态校验的关键在于灵活性,它可以适应不同的业务需求,例如检查数据的有效性(如日期格式、数值范围)、唯一性(如避免重复记录)和完整性(如必填字段不能为空)等。 自定义注解动态校验则是在编程环境中,通过...

    java后台注解校验工具类

    `@NotNull`注解用于检查对象是否为非空,如果对象为null,则校验失败。这个注解常用于确保必填字段已填写。 `@Size`注解则用于限制字符串、数组、集合和映射的大小。可以指定最小值和最大值,例如`@Size(min=5, max...

    Struts2输入校验总结

    例如`required`用于检查字段是否为空,`int`和`double`用于数值类型检查,`email`用于电子邮件地址验证等。 综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得...

    如何使用Spring Validation优雅地校验参数

    幸运的是,Spring框架已经为我们提供了一套校验组件:validation,这套组件可以帮助我们实现优雅的参数校验。 Spring Validation是什么? ------------------------- Spring Validation是Spring框架提供的一套...

    参数去空过滤器

    3. 去空处理:如果发现参数值包含空格,可以使用String类的trim()方法去除前导和尾随空格,或者使用replaceAll("\\s+", "")方法替换所有连续的空格为无。 4. 更新请求:将处理后的参数值重新设置回请求对象,以便...

    springboot+dubbo+validation 进行rpc参数校验的实现方法

    SpringBoot、Dubbo以及Hibernate Validation的组合为RPC参数校验提供了强大的支持。在本文中,我们将深入探讨如何利用这些技术实现在SpringBoot应用中对Dubbo RPC调用进行参数校验。 首先,我们需要了解项目的基本...

    Struts2的输入校验

    在XML文件中,可以定义每个字段的校验规则,如`requiredstring`校验器用于检查字段是否为空,`regex`校验器用于验证字段是否符合特定的正则表达式。 通过这种方式,开发者可以轻松地在Struts2中实现输入校验,既...

    JSR303自定义参数校验-校验类型罗列

    为什么需要自定义参数校验?** 在实际开发中,业务场景千变万化,JSR303提供的标准注解可能不足以覆盖所有需求。例如,可能需要针对特定国家或地区的电话号码格式进行校验,而`@Pattern`注解可能过于通用。这种情况...

    ppc:PHP参数校验;通过注释即可完成校验;校验结果插件化,缓存组建插件化方便集成

    但灵活是一把双刃剑,在很多场景下,函数的参数部分需要符合特定条件的(类型,是否可空),尤其是一些remote api或action等会被外部调用函数通过在函数的开头前段部分都会对参数进行校验,这样的方式会有几种不足:...

    Java计算校验和源码

    1. **空值检查**:首先判断传入的字符串是否为`null`或空字符串。如果是,则直接返回空字符串。 ```java if (data == null || "".equals(data)) { return ""; } ``` 2. **初始化变量**: - `total`:用于...

    struts2输入校验总结

    - `required`:判断字段是否为空。 - `requiredstring`:必需的字符串。 - `stringlength`:限定输入字符串的长度。 这些内置校验器可以灵活组合使用,满足多种复杂的校验需求。 总结,Struts2的输入校验机制提供...

    struts2笔记之校验表单信息

    1. Irequired:检查字段是否为空,是必填项。 2. IIrequiredstring:验证字段是否为非空字符串。 3. IIIint/long/short:验证字段是否为整数类型。 4. IVdate:验证字段是否符合日期格式。 5. Vexpression:允许...

    spring aop+自定义注解+反射实现统一校验脚手架

    example5:此例子是用于保存接口不用传递id参数,但是修改接口需要传id,此处用分组校验来实现, 下面的意思是:分组为UserParam的id不能为空 @CheckParams(notNull = true,groups=UserParam.class) private ...

    struts2校验框架

    例如,对于一个名为`UserAction`的Action类,其对应的校验配置文件应该命名为`UserAction-validation.xml`。这样,当用户提交表单时,Struts2框架会自动根据该文件中的规则进行校验,并在失败时返回错误信息。 ####...

Global site tag (gtag.js) - Google Analytics