Валидация формы Spring 3 MVC – Devcolibri

  • Автор темы Lucania
  • 22
  • Обновлено
  • 17, May 2023
  • #1
Вот пример кода для валидации формы с использованием Spring 3 MVC:
  • Создайте класс модели, который будет представлять данные формы. Допустим, у вас есть класс
     User
    , содержащий поля
     name
    и
     email
    .


javaCopy code
 public class User {

private String name;

private String email;

// Геттеры и сеттеры
}

  • Создайте класс валидатора, реализующий интерфейс
     org.springframework.validation.Validator
    . В этом классе вы можете определить правила валидации для полей модели.


javaCopy code
 import org.springframework.validation.Errors;

import org.springframework.validation.ValidationUtils;

import org.springframework.validation.Validator;

public class UserValidator implements Validator {

@Override

public boolean supports(Class<?> clazz) {

return User.class.equals(clazz);

}

@Override

public void validate(Object target, Errors errors) {

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "field.required");

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "email", "field.required");

// Дополнительные правила валидации, например, для проверки формата email

User user = (User) target;

if (!isValidEmail(user.getEmail())) {

errors.rejectValue("email", "email.invalid");

}

}

private boolean isValidEmail(String email) {

// Реализация правил валидации email

// ...

}

}


  • В контроллере, обработчике формы, добавьте валидатор и вызовите его при обработке формы.


javaCopy code
 @Controller

public class UserController {

private UserValidator userValidator;

@Autowired

public UserController(UserValidator userValidator) {

this.userValidator = userValidator;

}

@InitBinder

protected void initBinder(WebDataBinder binder) {

binder.addValidators(userValidator);

}

@PostMapping("/user/save")

public String saveUser(@ModelAttribute("user") User user, BindingResult result) {

// Валидация формы

userValidator.validate(user, result);

if (result.hasErrors()) {

// Обработка ошибок валидации

return "user-form";

}

// Логика сохранения пользователя

// ...

return "redirect:/user/success";

}

}


  • В файле конфигурации Spring (
     dispatcher-servlet.xml
    или аналогичный), добавьте бин для вашего валидатора.


xmlCopy code
 <beans>

<!-- Конфигурация валидатора -->

<bean id="userValidator" class="com.example.UserValidator" />

<!-- Другие бины и конфигурации -->
</beans>

  • В файле сообщений (
     messages.properties
    ), определите сообщения об ошибках валидации.


propertiesCopy code
 # messages.properties
field.required=Поле обязательно для заполнения
email.invalid=Неверный формат email
Таким образом, вам нужно создать класс модели, класс валидатора, настроить контроллер и файлы сообщений об ошибках. При обработке формы Spring будет автоматически применять валидацию на основ

Lucania


Рег
02 Feb, 2023

Тем
27158

Постов
27328

Баллов
298908
Тем
49554
Комментарии
57426
Опыт
552966

Интересно