Разделить на пользовательские регистрации и классы userdto Spring MVCJAVA

Программисты JAVA общаются здесь
Anonymous
Разделить на пользовательские регистрации и классы userdto Spring MVC

Сообщение Anonymous »

Я пишу проект в рамках Pure Spring, кроме того, что я не пишу API REST. @PostMapping("/register")
public String register(@ModelAttribute UserRequestDto userRequestDto,
BindingResult bindingResult,
HttpServletResponse response) {
if (bindingResult.hasErrors()) {
return REGISTER_PAGE;
}

var registered = authService.register(userRequestDto);
return REDIRECT_TO_HOMEPAGE;
}
< /code>
Однако я представил его как объект DTO, мне пришлось добавить сеттеры в этот класс, хотя объекты DTO должны быть неизменными (я хочу использовать класс записи) < /p>
@AllArgsConstructor
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class UserRequestDto {

@Email(message = "Your login doesn't look like an email")
String login;

@Pattern(
regexp = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$",
message = "Your password must be only letters and numbers and have size at least 8 characters"
)
String password;

@Pattern(
regexp = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$",
message = "Your password must be only letters and numbers and have size at least 8 characters"
)
@Nullable
String confirmPassword;
}
< /code>
@ModelAttribute без setters не работает.
Мне не нравится эта логика, используя @requestparam не хочет терять проверку. Я придумал другую логику и хотел бы проконсультироваться и услышать ваше мнение. Создайте класс userRegistrationForm и используйте @modelattirubute @valid с ним, а затем отправьте класс, созданный в контроллере DTO, уже неизмененном. Мой подход плохой? Очень интересно ваше мнение < /p>
public record UserDto(
String login,
String password
) { }
< /code>
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class UserRegistrationForm {

@Email(message = "Your login doesn't look like an email")
String login;

@Pattern(
regexp = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$",
message = "Your password must be only letters and numbers and have size at least 8 characters"
)
String password;

@Pattern(
regexp = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$",
message = "Your password must be only letters and numbers and have size at least 8 characters"
)
@Nullable
String confirmPassword;
}
< /code>
@PostMapping("/register")
public String register(@ModelAttribute UserRegistrationForm userRegistrationForm , BindingResult bindingResult,
HttpServletResponse response) {
if (bindingResult.hasErrors()) {
return REGISTER_PAGE;
}

var userDto = new UserDto(UserRegistrationForm.getLogin(), UserRegistrationForm.getPassword());
var registered = authService.register(userDto);
return REDIRECT_TO_HOMEPAGE;
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... spring-mvc

Вернуться в «JAVA»