注解接收前端信息或对象,返回自定义异常

注解接收前端信息或对象,返回自定义异常

1.注解方式

自定义拦截器

用拦截抛出的自定义异常异常,代码如下

import com.es.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.validation.ConstraintViolationException;

@ControllerAdvice
public class VaildExceptionConfig {
    private static final Logger logger = LoggerFactory.getLogger(VaildExceptionConfig.class);

    @ResponseBody
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public Result throwCustomException(MethodArgumentNotValidException methodArgumentNotValidException){
        logger.error("[ @Vaild异常捕获 ] " + methodArgumentNotValidException.getMessage());
        return Result.error(methodArgumentNotValidException.getBindingResult().getFieldError().getDefaultMessage());
    }

    @ResponseBody
    @ExceptionHandler(ConstraintViolationException.class)
    public Result throwCustomException(ConstraintViolationException constraintViolationException){
        logger.error("[ @Vaild异常捕获 ] " + constraintViolationException.getMessage());
        return Result.error(constraintViolationException.getMessage());
    }
}

实体类加入注解@NotEmpty @NotNull @NotBlank
部分代码如下

@NotEmpty(message = "请输入区域id")
    @ApiModelProperty(value = "区域id")
    private String areaId;
    @NotEmpty(message = "请输入开始时间")
    @ApiModelProperty(value = "开始时间")
//    @JsonFormat(pattern="yyyy-MM-dd HH:mm",timezone="GMT+8")
    private String startDate;
    @NotEmpty(message = "请输入结束事件")
    @ApiModelProperty(value = "结束事件")
//    @JsonFormat(pattern="yyyy-MM-dd HH:mm",timezone="GMT+8")

控制层 Controller 类上加入注解 @Validated 不然会失效
控制层 Controller 类上加入注解 @Validated 不然会失效
控制层 Controller 类上加入注解 @Validated 不然会失效

部分代码如下

@Validated
@RequestMapping("/xxx")
public class XXXController {}

接口方法上加入注解 @Valid 或 传入参数加注解@Valid
部分代码如下

	@PostMapping("query_event")
    public Result queryEvent(@RequestBody @Valid XXXModel e){
    ...
    }

2.自定义方法

import java.lang.reflect.Field;
import java.util.List;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
public class ObjectFildValidate {
	
	public static final Logger logger = LoggerFactory.getLogger(ObjectFildValidate.class);
/**
	 * 
	 * @Title: validateFild   
	 * @Description: 检查指定对象的属性值是否为空
	 * @param: @param object
	 * @param: @param exclFild
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
	public static boolean validateFild(Object object){
		boolean target = true;
		for (Field f : object.getClass().getDeclaredFields()) {
		    f.setAccessible(true);
		    try {
		    	String name = f.getName();
		    	//判断字段是否为空,并且对象属性中的基本都会转为对象类型来判断
		    	if (f.get(object) == null || f.get(object).equals("")) { 
				    target = false;
					return target;
				}
				//判断为集合,集合为空返回false
				if(f.get(object) instanceof List and ((List)f.get(object)).size()< 1){
					target = false;
					return target;
				}
			} catch (IllegalArgumentException e) {
				target = false;
				logger.error("对象属性解析异常" + e.getMessage());
				return target;
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				target = false;
				logger.error("对象属性解析异常" + e.getMessage());
				return target;
			}
		}
		
		return target;
	}
	/**
	 * 
	 * @Title: validateFild   
	 * @Description: 检查指定对象的属性值是否为空,排除指定的属性值   
	 * @param: @param object
	 * @param: @param exclFild
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
	public static boolean validateFild(Object object, List exclFild){
		boolean target = false;
		for (Field f : object.getClass().getDeclaredFields()) {
		    f.setAccessible(true);
		    try {
		    	String name = f.getName();
		    	// 判断属性名称是否在排除属性值中
		    	if(!exclFild.contains(name)){
		    		if (f.get(object) != null) { //判断字段是否为空,并且对象属性中的基本都会转为对象类型来判断
						   target = true;
						   break;
					}
		    	}
			} catch (IllegalArgumentException e) {
				target = false;
				logger.error("对象属性解析异常" + e.getMessage());
				return target;
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				target = false;
				logger.error("对象属性解析异常" + e.getMessage());
				return target;
			}
		}
		
		return target;
	}
 
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值