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

时间:2011-05-10 10:22:17

标签: java spring-mvc validation

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

2 个答案:

答案 0 :(得分:2)

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

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

通过

显示
<form:errors />

答案 1 :(得分:0)

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

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

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

注意:我直接在答案中输入了这个,因为我使用了spring mvc已经有一段时间了。