Большинство интернет приложений ведут диалог с пользователем. Во многих случаях это реализуется через html-формы. предоставляет разработчику богатый набор средств обработки этих объектов. В этой статье будет представлена простейшая форма, обрабатываемая средствами .

Первым делом необходимо создать класс, описывающий форму:


JAVA:
  1. public class PersonForm {
  2.     private String firstname;
  3.     private String lastname;
  4.     private int age;
  5.  
  6.     public int getAge() {return age;}
  7.     public void setAge(int age) {this.age = age;}
  8.     public String getFirstname() {return firstname;}
  9.     public void setFirstname(String firstname) {this.firstname = firstname;}
  10.     public String getLastname() {return lastname;}
  11.     public void setLastname(String lastname) {this.lastname = lastname;}
  12. }

Далее необходимо создать валидатор для этой формы:


JAVA:
  1. public class PersonFormValidator implements {
  2.  
  3.     public boolean supports(Class clazz) {
  4.         if (PersonForm.class.equals(clazz)){
  5.             return true;
  6.         }
  7.         return false;
  8.     }
  9.  
  10.     public void validate(Object obj, Errors errors) {
  11.         PersonForm form = (PersonForm) obj;
  12.         if (form.getFirstname().length() > 15){
  13.             errors.rejectValue("firstname", "Length of firsname must be less then 15 chars");
  14.         }
  15.         if (form.getAge() < 18){
  16.             errors.rejectValue("age", "Person too young");
  17.         }
  18.     }
  19. }

После того, как форма и валидатор готовы, можно приступить к написанию логики:


JAVA:
  1. @RequestMapping(value = "/new_person.html", method = RequestMethod.POST)
  2.     public newPerson(@ModelAttribute("person")
  3.     PersonForm personForm, BindingResult result) {
  4.         new PersonFormValidator().validate(personForm, result);
  5.         if (result.hasErrors()) {
  6.             return new ("person_form", "person", new PersonForm());
  7.         }
  8.         return new (new RedirectView("/persons.html"));
  9.     }
  10.  
  11.     @RequestMapping(value = "/new_person.html", method = RequestMethod.GET)
  12.     public setupForm(@ModelAttribute("person")
  13.     PersonForm personForm, BindingResult result) {
  14.         return new ("person_form", "person", new PersonForm());
  15.     }

Если форма не проходит валидацию, то возвращаемся на страницу редактирования формы. Если все в порядке, то переходим к странице со списком персон.

Теперь осталось написать jsp-страницу, содержащую элементы для ввода данных. Ниже представлен код jsp-страницы, описывающий форму.


XML:
  1. <form:form commandName="person">
  2.         <table>
  3.             <tr>
  4.                 <td>Last name</td>
  5.                 <td><form:input path="lastname" /></td>
  6.                 <td><form:errors path="lastname"/></td>
  7.             </tr>
  8.             <tr>
  9.                 <td>First name</td>
  10.                 <td><form:input path="firstname" /></td>
  11.                 <td><form:errors path="firstname"/></td>
  12.             </tr>
  13.             <tr>
  14.                 <td>Age</td>
  15.                 <td><form:input path="age" /></td>
  16.                 <td><form:errors path="age"/></td>
  17.             </tr>
  18.             <tr>
  19.                 <td>#</td>
  20.                 <td><input type="submit" /></td>
  21.             </tr>
  22.         </table>
  23.     </form:form>

В теге form:form определено имя коммандного объекта (person). По умолчанию, переменная, в которой хранится коммандный объект именуется command. Для каждого поля формы определяется элемент ввода и позиция, в которую будут выводиться ошибки.

На этом процедуры по созданию и обработке формы завершены.

Связанные записи