我在我的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,并没有找到拒绝字段而不提供消息的方法。
答案 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已经有一段时间了。