我已经为我的LocalValidatorFactoryBean
创建了一个自定义MessageInterpolator
,但由于某种原因,没有typeMismatch
错误传入其中。我正在使用的所有其他验证器,如@NotNull
、@Size
、@Pattern
等,都按预期显示。
我留下了一个非常丑陋的错误,我无法向用户显示:
无法将属性"data"类型为"java.lang.String"的属性值转换为所需的类型"org.springframework.web.multipart.MultipartFile";嵌套异常是java.lang.IllegalStateException:无法将属性"data"的类型[java.lang.String]的值转换为所需的类型[org.springframework.web.multipart.MultipartFile]:找不到匹配的编辑器或转换策略"
澄清:我故意发送String
而不是文件来触发typeMismatch
错误。我的目标是使用人性化的错误消息而不是异常文本优雅地处理此类验证错误。
相关版本信息:
- 验证 API 1.0.0.GA
- 休眠验证器 4.3.0.Final
- 弹簧-* 3.1.1.发布
感谢您的任何帮助!
由于您正在处理Multipart
参数,因此我怀疑您正在实现文件上传。是否已配置多部分解析程序?
默认情况下,Spring 不执行多部分处理 [...]。您可以通过将多部分解析器添加到 Web 应用程序的上下文来启用 Spring 多部分处理。
请注意,如果您使用的是Apache Commons或Servlet 3.0,则配置会有所不同。
其他可能的原因:
- 请求不包含多部分(未发送任何文件)
- 请求 uri 是错误的(它适用于其他一些处理程序方法)