/
itokar98
/
HomeWorkSpringBootRest
Обзор
Документация
Войти
/
itokar98
/
HomeWorkSpringBootRest
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/com/example/rest/config/UserArgumentResolver.java
58 строк
2 KB
itokar98
Запрос на слияние 'feature/task2' (
#1
) из feature/task2 в master
02 фев 2026, 17:55
Верифицирован
02 фев 2026, 17:55
d3d706d
Код
Авторство
О чём код?
package com.example.rest.config; import com.example.rest.dto.User; import jakarta.validation.Valid; import org.springframework.core.MethodParameter; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.BindingResult; import org.springframework.validation.SmartValidator; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; public class UserArgumentResolver implements HandlerMethodArgumentResolver { private final SmartValidator validator; public UserArgumentResolver(SmartValidator validator) { this.validator = validator; } @Override public boolean supportsParameter(MethodParameter parameter) { return parameter.hasParameterAnnotation(UserParam.class) && parameter.getParameterType().equals(User.class); } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { String userName = webRequest.getParameter("user"); String password = webRequest.getParameter("password"); User user = new User(userName, password); // Проверяем, есть ли аннотация @Valid на параметре boolean shouldValidate = parameter.hasParameterAnnotation(Valid.class); if (shouldValidate) { // Создаем BindingResult для хранения ошибок валидации BindingResult bindingResult = new BeanPropertyBindingResult(user, "user"); // Выполняем валидацию validator.validate(user, bindingResult); // Если есть ошибки валидации, выбрасываем исключение if (bindingResult.hasErrors()) { throw new MethodArgumentNotValidException(parameter, bindingResult); } } return user; } }