Spring - заполнить поле формы сообщением об ошибке - PullRequest
2 голосов
/ 16 июня 2010

У меня есть приложение Spring 2.5, и у меня есть несколько форм, где я выполняю различные проверки. У меня нет проблем с выполнением этой проверки и отображением ошибок на странице рядом с соответствующей формой ввода. Мне было интересно, могу ли я вместо этого поместить сообщение об ошибке в значение формы, чтобы оно отображалось в поле ввода, а не просто в теге <form:errors path="*" cssClass="error" >. Я попытался установить значение в классе валидатора и вижу его в журнале при настройке атрибута сеанса формы, но значение не отображается на странице в поле.

Например, у меня есть страница с элементом управления, определенным как:

<form:input path="username" cssClass="textinput" cssErrorClass="textinput-error" />

В валидаторе я попытался установить значение имени пользователя для объекта:

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", "error.field-required");
// This value doesn't show on the page
user.setUsername("You must supply a user name");

Можно ли установить значение на основе ошибки и заполнить ее на странице?

1 Ответ

1 голос
/ 21 июня 2010

Выполните следующие действия:

Внутри вашего метода проверки

import static org.springframework.validation.BindingResult.MODEL_KEY_PREFIX;

public void validate(Object command, Errors errors) {
    /**
      * keep in mind I SUPPOSE your model Attribute is called command - override if needed
      */
    User user = (User) ((BindingResult) errors).getModel().get(MODEL_KEY_PREFIX + "command");

    user.setUserName("You must supply a user name");

    /**
      * Now just do it
      */
    ((BindingResult) errors).getModel().put(MODEL_KEY_PREFIX + "command", user);
}

Это удовлетворит ваши потребности

Предупреждение. Поскольку сообщение об ошибке является простой строкой, не может установить какое-либо свойство, класс которого не является простой строкой

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