SpringMVC:如何将两个输入标记为无效?

发布于 2024-11-06 07:35:31 字数 643 浏览 1 评论 0原文

我在我的 web 应用程序中使用 SpringMVC 来处理表单及其验证。

在我的验证器中,我有这样的代码:

@Override
public void validate(final Object target, final Errors errors)
{
    final LoginCommand loginCommand = (LoginCommand) target;
    if (checkCredentials(loginCommand.getLogin(), loginCommand.getPassword()) {
        errors.rejectValue("login", "login.error.invalid");
        errors.rejectValue("password", "login.error.invalid");          
    }
    //..

这样,当填充 cssErrorClass 属性时,我会得到正确呈现的无效值。 现在的问题是,login.error.invalid 消息位于我将显示两次的错误消息列表中。

将两个输入字段标记为无效但错误列表中只有一条消息的最佳方法是什么? 我搜索了 SpringMVC 文档/api 并没有找到一种在不提供消息的情况下拒绝字段的方法。

I am using SpringMVC in my webapp to handle forms and their validation.

In my Validator I have code like this:

@Override
public void validate(final Object target, final Errors errors)
{
    final LoginCommand loginCommand = (LoginCommand) target;
    if (checkCredentials(loginCommand.getLogin(), loginCommand.getPassword()) {
        errors.rejectValue("login", "login.error.invalid");
        errors.rejectValue("password", "login.error.invalid");          
    }
    //..

This way I get the properly rendered invalid whenn filling the cssErrorClass attribute.
Problem now is that the login.error.invalid message is in the error-message list I am going to display twice.

What is the best way to mark two input fields invalid, but only have one message in the error list?
I searched the SpringMVC documentation/api all over and did not find a way to reject a field without supplying a message.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

谜兔 2024-11-13 07:35:31

我建议在这种情况下将所有表单标记为无效:

if (checkCredentials(loginCommand.getLogin(), loginCommand.getPassword()) {
    errors.rejectValue("login.error.invalid");         
}

并将其显示在视图中

<form:errors />

I suggest to mark all form as invalid in this case:

if (checkCredentials(loginCommand.getLogin(), loginCommand.getPassword()) {
    errors.rejectValue("login.error.invalid");         
}

And show it on view by

<form:errors />
千纸鹤 2024-11-13 07:35:31

Assuming

<%@ taglib uri="spring.tld" prefix="s"%>
<%@ taglib uri="spring-form.tld" prefix="sf"%>

您必须通过将 sf:errors 标记放置在 as:bind 标记中来限制它。这是一个示例(路径可能不适合您的需求,但对于本示例来说很好),它将错误限制在登录字段中:

<s:bind path="loginForm.login">
  <sf:errors/>
</s:bind>

注意:我直接将其输入到答案中,自从我使用 spring mvc 以来已经有一段时间了。

Assuming

<%@ taglib uri="spring.tld" prefix="s"%>
<%@ taglib uri="spring-form.tld" prefix="sf"%>

You must limit the sf:errors tag by placing it in a s:bind tag. Here is an example (the path is probabaly not correct for your needs, but is fine for this example) that limits the errors to the login field:

<s:bind path="loginForm.login">
  <sf:errors/>
</s:bind>

Note: I typed this directly into the answer and it's been a while since I used spring mvc.

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