Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit eccc037

Browse files
Part 25: Add UserInfoValidator.java
1 parent 81b5f11 commit eccc037

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package spring.oldboy.validation.impl;
2+
3+
/* Lesson 91: Пишем свой обработчик валидатор-констрейнтов */
4+
5+
import jakarta.validation.ConstraintValidator;
6+
import jakarta.validation.ConstraintValidatorContext;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.stereotype.Component;
9+
import org.springframework.util.StringUtils;
10+
import spring.oldboy.database.repository.company_repository.CompanyRepository;
11+
import spring.oldboy.dto.UserCreateEditDto;
12+
import spring.oldboy.validation.UserInfo;
13+
14+
/*
15+
Все классы реализующие ConstraintValidator сразу становятся Spring bean-ами
16+
и аннотировать их как @Component не обязательно, но мы сделаем это для
17+
наглядности
18+
*/
19+
@Component
20+
/*
21+
И как в любой bean мы можем внедрять нужные нам зависимости. Данную аннотацию
22+
применили для внедрения CompanyRepository, хотя он нигде в коде не используется,
23+
просто демонстрация, что данный код будет работать, даже если удалить аннотацию
24+
@Component.
25+
*/
26+
@RequiredArgsConstructor
27+
/*
28+
Lesson 91: Наш кастомный валидатор должен реализовывать ConstraintValidator,
29+
параметризуем мы его соответственно: сначала наша аннотация, затем класс над
30+
которым эта аннотация будет стоять.
31+
*/
32+
public class UserInfoValidator implements ConstraintValidator<UserInfo, UserCreateEditDto> {
33+
34+
private final CompanyRepository companyRepository;
35+
36+
/*
37+
Метод *.initialize(A constraintAnnotation) нам реализовывать не обязательно, а
38+
вот метод *.isValid() нужно.
39+
*/
40+
@Override
41+
public boolean isValid(UserCreateEditDto value, ConstraintValidatorContext context) {
42+
/* Проверяем есть ли текст в нужных нам полях, все в одном методе */
43+
return StringUtils.hasText(value.getFirstname()) || StringUtils.hasText(value.getLastname());
44+
}
45+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /