如何仅获取嵌套异常消息表单弹簧验证?

上下文

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <org.springframework.boot.version>2.1.6.RELEASE</org.springframework.boot.version>
    <mysql-connector-java.version>8.0.15</mysql-connector-java.version>
    <org.apache.tomcat.embed.version>9.0.12</org.apache.tomcat.embed.version>
    <hibernate-validator.version>6.0.13.Final</hibernate-validator.version>
    <javax.el.version>3.0.0</javax.el.version>
    <jstl.version>1.2</jstl.version>
    <java.version>1.8</java.version>
</properties>

我准备了 BigDecimalEditor 类,它扩展了 PropertyEditorSupport 并且它工作正常 - 它从重写的 NumberFormatException 方法抛出 setasText(String text)。 接下来,我准备了 CustomBindingErrorProcessor,它扩展了 DefaultBindingErrorProcessor,其中方法 processpropertyaccessException(PropertyaccessException accessException,BindingResult bindingResult) 被覆盖如下:

   public void processpropertyaccessException(PropertyaccessException accessException,BindingResult bindingResult) {

    // overwrites NumberFormatException error message
    if(accessException.getcause() instanceof NumberFormatException){

        String fieldName = accessException.getPropertyChangeEvent().getPropertyName();
        String exceptionError = accessException.getcause().getMessage();

        FieldError fieldError = new FieldError(fieldName,"BINDING_ERROR",fieldName + ": " + exceptionError);

        bindingResult.addError(fieldError);
    }else{
        super.processpropertyaccessException(accessException,bindingResult);
    }

} 

但它仍然显示(在已验证的表单字段附近)这么长的消息:

未能将 java.lang.String 类型的属性值转换为属性高度所需的类型 java.math.BigDecimal;嵌套异常是 java.lang.NumberFormatException: The Number not识别!

例如,如果文本包含两个逗号。

问题是 - 如何仅获取嵌套异常的消息“无法识别数字!”

ldl274057936 回答:如何仅获取嵌套异常消息表单弹簧验证?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2448.html

大家都在问