SpringMVC: Как пометить два входа как недействительные? - PullRequest
3 голосов
/ 10 мая 2011

Я использую 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 находится в списке сообщений об ошибках, которые я собираюсь отобразить дважды.

Каков наилучший способ пометить два поля ввода недействительными, но иметь только одно сообщение всписок ошибок?Я искал всю документацию / api SpringMVC и не нашел способа отклонить поле без предоставления сообщения.

Ответы [ 2 ]

2 голосов
/ 10 мая 2011

Я предлагаю пометить все формы как недействительные в этом случае:

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

и показать их в виде

<form:errors />
0 голосов
/ 10 мая 2011
Если предположить,
<%@ 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...