0
点赞
收藏
分享

微信扫一扫

客户端验证:Validation

Ewall_熊猫 2022-04-04 阅读 55
java

验证字段的dto/entity内添加配置

import lombok.Data;
import javax.validation.constraints.Pattern;
 
/**
 * @Classname DictDto
 * @Description 字典 传输类
 * @Date 2020-04-29 9:53
 * @Created by deedywu
 */
public final class DictDto {
 
    @Data
    public static final class ParentInsert {
 
        @Pattern(regexp = "[a-zA-Z0-9_]{1,36}", message = "字段应该在1-36位之间且只能是字母数字组成")
        private String field;
 
        ...
 
    }
 
}

再在全局异常拦截里进行配置

import com.gecxkj.common.util.ResponseResult;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.*;
 
/**
 * @Classname ControllerAdvice
 * @Description 全局处理
 * @Date 2020/4/2 15:11
 * @Created by deedywu
 */
@ControllerAdvice
public class MyControllerAdvice {
 
    ...
 
    /**
     * 全局异常捕捉处理
     *
     * @param ex exception
     * @return
     */
    @ResponseBody
    @ExceptionHandler(value = Exception.class)
    public ResponseResult errorHandler(Exception ex) {
        ex.printStackTrace();
        ResponseResult rr = new ResponseResult();
        if (ex instanceof BindException) {
            // 获取是否有字段验证的异常
            BindingResult bindingResult = ((BindException) ex).getBindingResult();
            if (bindingResult.hasErrors() && bindingResult.hasFieldErrors()) {
                FieldError fieldError = bindingResult.getFieldError();
                rr.setResult(500, fieldError.getDefaultMessage(), fieldError.getField());
            } else {
                rr.setResult(500, ex.getMessage());
            }
        } else {
            rr.setResult(500, ex.getMessage());
        }
        return rr;
    }
}

ResponseResult 类

import lombok.Data;
import lombok.NoArgsConstructor;
 
/**
 * @Classname ResponseResult
 * @Description 公共的前端返回
 * @Date 2020/4/1 15:22
 * @Created by deedywu
 */
@Data
@NoArgsConstructor
public final class ResponseResult {
 
    /**
     * 返回状态码
     */
    private Integer code = 400;
 
    /**
     * 返回错误信息
     */
    private String msg = "返回错误";
 
    /**
     * 返回数据
     */
    private Object data;
 
    public void setResult(Integer code, String msg, Object data) {
        setResult(code, msg);
        this.data = data;
    }
 
    public void setResult(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
 
}

最后在controller进行配置 ,入参加入@Valid注解就可以了

@PostMapping("parent")
@ResponseBody
@ApiOperation(value = "父级字典编辑操作", notes = "根据有无id编辑/新增")
public ResponseResult parentEdit(@Valid DictDto.ParentInsert payload) {
    ResponseResult rr = new ResponseResult();
    if (dictService.insert(payload)) {
        rr.setResult(200, "新增字典类型成功!");
    }
    return rr;
}
举报

相关推荐

0 条评论