Spring 中的 JSR 303 Bean 验证
这是我的 formbean:-
public class LoginFormBean {
@NotEmpty
private String userId;
@NotEmpty
private String password;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassword() {
return password;
}
public void setPassword(String pass) {
this.password = pass;
}
}
在我的 message.properties 文件中我写:-
NotEmpty={0} must not empty.
它向我显示错误消息:userId 不能为空。
和 password 不能为空。
但是我想显示错误消息:用户 ID 不能为空。
或 '密码不能为空 空。'
我知道我可以在我的 formBean 中使用 @NotEmpty(message="User Id can't notempty")
但我想要同步消息,就像我们需要更改消息一样,它会减少开销。
我已经搜索了 JSR 文档,但没有找到任何可以将我的属性名称 userId
动态替换为 User Id
的内容。请大家帮帮我,已经困了两天了。
如果不可能,请告诉我,如果不可能,请以其他方式帮助我。
谢谢
沙姆斯
here is my formbean:-
public class LoginFormBean {
@NotEmpty
private String userId;
@NotEmpty
private String password;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassword() {
return password;
}
public void setPassword(String pass) {
this.password = pass;
}
}
and in my message.properties file i write:-
NotEmpty={0} must not empty.
It shows me error message as: userId must not empty.
and password must not empty.
But i want to show error message as User Id must not empty.
or 'Password must not
empty.'
I know i can use @NotEmpty(message="User Id must not empty")
in my formBean but i want synchronize message as if we need to change message, it will be less overhead.
I have searched the JSR docs but not find any thing to replace my attribute name userId
to User Id
on fly. Please guys help me, stuck in it from two days.
If it is not possible then tell me or if not then help me in something alternative.
Thanks
Shams
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您现在可能已经解决了这个问题,但是要在 JSR 303 formbean 上设置错误消息,您需要按以下格式将条目添加到属性文件中:
在您的情况下,将是:
其中 loginFormBean 是表单的名称,而不是班级名称。
You've probably fixed this by now, but to set up error messages on JSR 303 formbeans you need to add entries to your property file in the following format:
In your case that will be:
where loginFormBean is the name of your form and not the class name.
在同一个 message.properties 文件中,您可以添加以下内容:
或者您可以使用单独的文件作为字段名称,使用单独的文件作为验证消息代码。这将更具可读性。
祝你好运 :)
in the same message.properties file you can just add the following:
or you can use a separate file for field names and separate file for validation message codes. This will be just more readable.
Good Luck :)
作为参考,只需记录 BeanPropertyBindingResult 实例并检查日志即可。您会发现每个违反验证的属性都有四种不同类型的属性代码。
这是供参考的示例日志
在上面的日志中您可以找到
codes [NotEmpty.member.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty]
当你没有配置任何错误码或者spring没有找到匹配的代码时,spring会带来DefaultMessageCodesResolver正在采取行动解决错误消息。检查 java doc 以查看附加错误代码的格式。
For reference, just log the
BeanPropertyBindingResult
instance and check the log. You would find four different types property codes for each property violating validations.Here is a sample log for reference
In above log you can find
codes [NotEmpty.member.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty]
When you don't configure any error codes or spring doesn't find matching code then spring brings DefaultMessageCodesResolver in action to resolve error message. Check java doc to see the format of additional error codes.