我在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,没有找到不提供消息就拒绝字段的方法。

最佳答案

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

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

并在视图上显示
<form:errors />

10-04 12:45