- 06, May 2023
- #1
Для создания кастомной аннотации для валидации формы в Spring MVC можно выполнить следующие шаги:
javaCopy code
javaCopy code
javaCopy code
javaCopy code
- Создайте новый класс-аннотацию, отмеченный аннотацией
, которая указывает на использование этой аннотации в контексте валидации. Например:@Constraint
javaCopy code
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = CustomValidator.class)
public @interface CustomValidation {
String message() default "Invalid field value";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Здесь CustomValidation
- название созданной вами аннотации, CustomValidator
- класс, который будет выполнять проверку значения поля на соответствие заданным условиям.
- Создайте класс
, реализующий интерфейсCustomValidator
с параметрамиConstraintValidator
и типом проверяемого поля. Например:CustomValidation
javaCopy code
public class CustomValidator implements ConstraintValidator<CustomValidation, String> {
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
// Реализуйте проверку значения поля на соответствие заданным условиям и верните true или false
}
}
- Отметьте поле, которое вы хотите проверить с помощью вашей кастомной аннотации
. Например:@CustomValidation
javaCopy code
public class MyForm {
@CustomValidation
private String myField;
}
- Добавьте
перед параметром метода обработки формы в вашем контроллере. Например:@Valid
javaCopy code
@PostMapping("/form")
public String processForm(@Valid MyForm myForm, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
// Обработка ошибок
} else {
// Обработка успешного заполнения формы
}
}
Теперь при отправке формы значение поля myField
будет проверяться с помощью вашей кастомной аннотации @CustomValidation
. Если проверка не будет пройдена, соответствующая ошибка будет добавлена в объект BindingResult
.