Spring 中的 JSR 303 Bean 验证

发布于 2024-10-27 17:14:09 字数 968 浏览 2 评论 0原文

这是我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

花心好男孩 2024-11-03 17:14:09

您现在可能已经解决了这个问题,但是要在 JSR 303 formbean 上设置错误消息,您需要按以下格式将条目添加到属性文件中:

<Constraint-Name>.<formbean-name>.<attribute-name>=My Message Text

在您的情况下,将是:

NotEmpty.loginFormBean.userId=User Id must not empty

NotEmpty.loginFormBean.password=Password must not empty

其中 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:

<Constraint-Name>.<formbean-name>.<attribute-name>=My Message Text

In your case that will be:

NotEmpty.loginFormBean.userId=User Id must not empty

NotEmpty.loginFormBean.password=Password must not empty

where loginFormBean is the name of your form and not the class name.

粉红×色少女 2024-11-03 17:14:09

在同一个 message.properties 文件中,您可以添加以下内容:

userId=User Id
password=Password

或者您可以使用单独的文件作为字段名称,使用单独的文件作为验证消息代码。这将更具可读性。

祝你好运 :)

in the same message.properties file you can just add the following:

userId=User Id
password=Password

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 :)

鸵鸟症 2024-11-03 17:14:09

作为参考,只需记录 BeanPropertyBindingResult 实例并检查日志即可。您会发现每个违反验证的属性都有四种不同类型的属性代码。

这是供参考的示例日志

Field error in object 'member' on field 'name': rejected value []; codes [NotEmpty.member.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.name,name]; arguments []; default message [name]]; default message [may not be empty]

在上面的日志中您可以找到
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

Field error in object 'member' on field 'name': rejected value []; codes [NotEmpty.member.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.name,name]; arguments []; default message [name]]; default message [may not be empty]

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文