Java SpringMVC:如何标记两个输入无效?
我在webapp中使用SpringMVC来处理表单及其验证 在我的验证器中,我有如下代码:Java SpringMVC:如何标记两个输入无效?,java,spring-mvc,validation,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.getPa
@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 />
假设
必须将sf:errors标记放在s:bind标记中以限制它。下面是一个将错误限制在登录字段的示例(路径可能不适合您的需要,但在本例中是正确的):
<s:bind path="loginForm.login">
<sf:errors/>
</s:bind>
注意:我直接在答案中输入了这一点,我已经有一段时间没有使用spring mvc了。通常情况下,它会像这样工作,但有错误。拒绝(“login.error.invalid”)。但是,特定字段不会获得应用于class属性的cssErrorClass样式。 <s:bind path="loginForm.login"> <sf:errors/> </s:bind>