Как использовать @ModelAttribute только для некоторых полей в классе
У меня есть класс User
в которым есть все поля, которые описывают пользователя.
Вот кусочек кода для примера:
...
@NotBlank
@Size(min = 2, max = 20)
private String username;
@NotBlank
@Size(min = 5)
private String password;
@Transient
private String passwordConfirm;
private boolean enabled = false;
@Email
@NotBlank
private String email;
...
Что бы реализовать функцию смена пароля, мне нужно использовать только поля password
и passwordConfirm
.
Вот пример методов в контроллере:
@RequestMapping("/form/password")
private String formPassword(
@RequestParam(value = "username", required = true) String username,
Model model
) {
model.addAttribute("user", userService.findUserByUsername(username));
return "user/passwordForm";
}
@RequestMapping("/change/password")
private String changePassword(
@Valid
@ModelAttribute("user") User user,
BindingResult result
) throws Exception {
if (result.hasErrors()) {
log.log(Level.INFO, "my errors" + result.getAllErrors());
return "user/passwordForm";
}
// code
return "redirect:/profile?username=" + user.getUsername();
}
Так как форма дял смены пароля у меня связана с классом User
, то я получу ошибку о том, что username
, email
не заполнены. Как это обойти?