spring - 如何仅获取嵌套的异常消息表单弹簧验证?
问题描述
语境
<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:无法识别的数字!
例如,如果文本包含两个逗号。
问题是 - 如何仅获取嵌套异常的消息“无法识别的号码!”
解决方案
这里有一个关于它的链接链接这里
我能够解决它,因为 messages.properties 添加: typeMismatch.object.camp=something wrong
推荐阅读
- ios - 从 Tableview 更新 Viewcontroller 中的标签文本
- python - pytesseract 在 windows 平台上不起作用
- c# - 使用部分匹配的函数作为代表?
- javascript - 从单个文件中导出 typescript 类和接口
- scala - 如何删除我的列表变量中的空值?
- mysql - 如何使用 Gradle 导入 MySQL 并连接到 JavaFX
- python-3.x - Python3 修改的 Gram-Schmidt
- python - Spyder IDE里面Anaconda3安装opticspy-0.2.1模块报错
- python - 使用 Python 从 Windows 可执行文件中提取链接文件
- haskell - Hspec deal with two IO actions in Haskell