All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cc.shacocloud.mirage.web.exception.MethodArgumentNotValidException Maven / Gradle / Ivy

package cc.shacocloud.mirage.web.exception;

import org.springframework.core.MethodParameter;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;

/**
 * 当对注解为{@code @Valid}的参数进行验证失败时,将抛出异常。
 */
@SuppressWarnings("serial")
public class MethodArgumentNotValidException extends Exception {

    private final MethodParameter parameter;

    private final BindingResult bindingResult;


    /**
     * {@link MethodArgumentNotValidException}的构造函数。
     *
     * @param parameter     验证失败的参数
     * @param bindingResult 验证的结果
     */
    public MethodArgumentNotValidException(MethodParameter parameter, BindingResult bindingResult) {
        this.parameter = parameter;
        this.bindingResult = bindingResult;
    }

    /**
     * 返回验证失败的方法参数。
     */
    public MethodParameter getParameter() {
        return this.parameter;
    }

    /**
     * 返回失败验证的结果。
     */
    public BindingResult getBindingResult() {
        return this.bindingResult;
    }


    @Override
    public String getMessage() {
        StringBuilder sb = new StringBuilder("方法 '")
                .append(parameter.toString())
                .append("' 下标 [")
                .append(parameter.getParameterIndex()).append("] 参数类型 [")
                .append(parameter.getParameterType())
                .append("] 参数校验失败")
                .append(parameter.getExecutable().toGenericString());

        if (bindingResult.getErrorCount() > 1) {
            sb.append(",检查出").append(bindingResult.getErrorCount()).append("个错误");
        }

        sb.append(": ");
        for (ObjectError error : bindingResult.getAllErrors()) {
            sb.append("[").append(error).append("] ");
        }
        return sb.toString();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy