Содержание
Эта статья является продолжением статьи о формах в Spring и о проверке введенных пользователем данных. Будут рассмотрены аннотации, заменяющие валидатор.
Чтобы указать параметры проверки имя пользователя будем использовать следующие аннотации:
@NotBlank
@Size(min=3, max=16)
private String username;
Аннотация @Email используется для проверки правильности введенного email'а:
@Email
private String email;
Увы, нет стандартной аннотации, которая проверяет совпадение значений двух полей (в нашем случае - password и confirmPassword). Такую аннотацию мы создадим в следующей статье.
То есть, окончательный вариант класса SignupForm будет выглядеть следующим образом:
package com.seostella.springfa.form;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
public class SignupForm {
@NotBlank
@Size(min=3, max=16)
private String username;
@NotBlank
private String password;
@NotBlank
private String confirmPassword;
@Email
private String email;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getConfirmPassword() {
return confirmPassword;
}
public void setConfirmPassword(String confirmPassword) {
this.confirmPassword = confirmPassword;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
В классе SignupValidator уже нет никакой необходимости, поэтому он исключен из проекта.
Необходимо внести еще одну правку в контроллер SignupController. Так как мы используем аннотации, которые будут проверять значение полей класса, необходимо описать аннотацией @Valid параметр метода SignupForm. Ниже приведен полный листинг класса SignupController:
package com.seostella.springfa.controller;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.seostella.springfa.form.SignupForm;
@Controller
@RequestMapping("/signup")
public class SignupController {
@RequestMapping(method = RequestMethod.GET)
public String signup(ModelMap model) {
SignupForm signupForm = new SignupForm();
model.put("signupForm", signupForm);
return "signup";
}
@RequestMapping(method = RequestMethod.POST)
public String processSignup(@Valid final SignupForm signupForm, final BindingResult result) {
if (result.hasErrors()) {
return "signup";
}
return "signup-success";
}
}
Остальные файлы проекта остаются без изменений.
В классе SignupForm использовались аннотации из двух пакетов: javax.validation.constraints и org.hibernate.validator.constraints. Рассмотрим остальные аннотации из этих пакетов.
Пакет javax.validation.constraints:
Пакет org.hibernate.validator.constraints:
Код проекта Вы можете скачать по следующей ссылке - Скачать spring-fa.zip.
< | Формы и валидация форм в Spring | Аннотация для проверки равенства двух полей формы в Spring MVC | > |
31 октября 2012 г. 17:59
|
Почему у меня не работает это условие
if (result.hasErrors()) { return "signup"; } у меня всегда result.hasErrors() равен нулю, даже если я нарошно делаю ошибку? |
16 ноября 2012 г. 13:22
|
Разобрался
|
11 января 2013 г. 0:41
|
А как проверить поле
private Date year; |
11 января 2013 г. 0:48
|
Нужно задать первый вопрос!
Есть поле на форме для ввода даты 15.01.2012. Ка с ним правильно работать? При регистрации его нужно записать в БД, пр чтение извлечь! |
11 января 2013 г. 2:30
|
Как провалидировать
@RequestMapping(value = "/useradd", method = RequestMethod.POST) public String addUserSubmit(@Valid final User user, HttpServletRequest request, final BindingResult result, Model model) { Role role = roleService.readRole(Integer.parseInt(request.getParameter("roleId"))); if(role.getName().equals("student")) { Group group = groupService.readGroup(Integer.parseInt(request.getParameter("groupId"))); user.setGroup(group); } user.getRoles().add(role); if(result.hasErrors()) return "useradd"; userService.addUser(user); foldersService.createFolders(user); model.addAttribute("addeduser", user); return "redirect:/useradd"; } |