Spring bean验证不会替换typeMismatch错误的消息

时间:2012-06-28 16:06:00

标签: java spring spring-mvc bean-validation hibernate-validator

我为MessageInterpolator创建了自定义LocalValidatorFactoryBean但由于某种原因,没有 typeMismatch 错误传递给它。我正在使用的所有其他验证器,如@NotNull@Size@Pattern等,都会按预期显示。

我留下了一个非常难看的错误,我无法向用户显示:

  

无法将类型'java.lang.String'的属性值转换为属性'data'所需的类型'org.springframework.web.multipart.MultipartFile';嵌套异常是java.lang.IllegalStateException:无法将类型[java.lang.String]的值转换为属性“data”所需的类型[org.springframework.web.multipart.MultipartFile]:找不到匹配的编辑器或转换策略“< / p>

澄清:我故意发送String而不是文件来触发typeMismatch错误。我的目标是使用人性化的错误消息而不是异常文本来优雅地处理这种验证错误。

相关版本信息:

  • validation-api 1.0.0.GA
  • hibernate-validator 4.3.0.Final
  • spring- * 3.1.1.RELEASE

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

由于您正在处理Multipart个参数,我怀疑您正在实现文件上传。您是否配置了multipartResolver

  

默认情况下,Spring不进行多部分处理[...]。您可以通过向Web应用程序的上下文添加多部分解析程序来启用Spring多部分处理。

请注意,如果您使用的是Apache Commons或Servlet 3.0,则配置会有所不同。

其他可能的原因:

  • 请求不包含多部分(未发送文件)
  • 请求uri是错误的(它用于其他一些处理程序方法)