我正在使用 Bean Validation API 对我的自定义消息进行表单验证:
@NotNull(message = "Please enter your birthday.")
@DateTimeFormat(pattern = "MM/dd/yyyy")
@Past(message = "That's impossible.")
private Date birthday;
在我输入错误的日期格式之前,一切正常。然后我在我的页面上得到了如此冗长而详细的错误消息:
Failed to convert property value of type [java.lang.String] to required type
[java.util.Date] for property birthday; nested exception is
bla-bla-bla...
由于来自message
的{{1}}中没有字段@interface DateTimeFormat
,因此无法像其他注释一样添加我的消息。
如何指定org.springframework.format.annotation.DateTimeFormat
等自定义消息?
答案 0 :(得分:3)
你必须使用MessageSource bean和messages.properties文件,你可以在那里添加键值,如下所示。
typeMismatch=Please use MM/dd/yyyy format
如果您正在使用SpringBoot,则默认情况下MessageSource bean将可用,您只需要在messages.properties中添加键值。对于普通的Spring应用程序,您可以使用ReloadableResourceBundleMessageSource或ResourceBundleMessageSource。
按以下顺序解析属性键。
typeMismatch.[form].[property]
typeMismatch.[form]
typeMismatch
请参阅http://jtuts.com/2014/11/09/validating-dates-in-spring-form-objects/
答案 1 :(得分:2)
添加自定义错误消息的正确方法是DefaultMessageCodeResolver 您可以使用解析程序绑定对象+字段级别的错误(typeMismatch.YourClassName.birthday =自定义消息。),如javadoc中所述。
查找详细用法here