问题:如何在 Spring 中获取验证消息中的字段名称
有没有一种方法可以访问 ValidationMessages.properties 文件中的字段名称,例如下面我尝试使用 {0} 但它不起作用,我在某处见过它。我希望 Spring 动态地将字段名称放在那里,这样我就不必为每个类重复它。
public class RegistrationForm {
@NotEmpty(message = "{NotEmpty}")
private String email;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Run Code Online (Sandbox Code Playgroud)
ValidationMessages.properties
NotEmpty={0} TEST
Run Code Online (Sandbox Code Playgroud) Spring 3.0 MVC
首先,我没有找到任何关于messages.properties @ springsource的文档. 我发现有关覆盖错误消息的所有内容都在各种论坛上.如果有人提到了messages.properties的记录,那就太棒了.也许messages.properties不是来自spring而是java规范?
我已经尝试遵循关于绑定之前的JSR-303类型检查的建议 我的目标是用我自己的用户友好错误消息替换一些类型不匹配错误消息
我的情况如下:
模型
public class Test {
private int numberbomb;
public int getNumberbomb() {
return numberbomb;
}
public void setNumberbomb(int numberbomb) {
this.numberbomb = numberbomb;
}
}
Run Code Online (Sandbox Code Playgroud)
myservlet.xml
<mvc:annotation-driven/>
Run Code Online (Sandbox Code Playgroud)
JSP
<form:form id="test" method="post" modelAttribute="test">
<form:errors path="*"/>
<form:label path="numberbomb">numberbomb</form:label>
<form:input path="numberbomb"/>
</form:form>
Run Code Online (Sandbox Code Playgroud)
类\ messages.properties
typeMismatch=bad value you bad bad person
test.numberbomb=you are driving me crazy with these bad inputs
Run Code Online (Sandbox Code Playgroud)
表格输出
无法将类型为java.lang.String的属性值转换为属性numberbomb所需的int类型; 嵌套异常是org.springframework.core.convert.ConversionFailedException:无法将类型java.lang.String中的值"three"转换为int类型; 嵌套异常是java.lang.NumberFormatException:对于输入字符串:"three"
我的控制器中的BindingResult.toString()
字段'numberbomb'上对象'test'中的字段错误:被拒绝的值[3]; 码[typeMismatch.test.numberbomb,typeMismatch.numberbomb,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable:codes [test.numberbomb,numberbomb]; 参数[]; …
我使用的是Spring 2.5框架,我需要将Double值作为输入.当我想验证Double值与类型不匹配错误.所以我添加,typeMismatch.java.lang.Double =一般错误消息.
假设,我的命令类是SearchInfo.java,其Double类型属性为"amount".我想在amount字段中添加特定的错误消息.