У меня есть объект под названием Пользователь, где я сохраняю все данные Пользователя. У меня есть несколько аннотаций для проверки, и все работает нормально.
public class User{
@NotEmpty
@Email
@Size(max=100)
@Column(name="username", length=100, nullable=false, unique=true)
private String username;
@NotEmpty
@Size(min=5, max=40)
@Column(name="password", length=40, nullable=false)
private String password;
@Size(min=5, max=40)
@Transient
private String newPassword;
// other attributes ,getters and setters
}
У меня есть две разные формы (каждая на своей странице). В первом я спрашиваю имя пользователя и пароль для создания пользователя, поэтому оба они являются обязательными.
Во второй форме я показываю информацию о пользователе: имя пользователя, другие данные (которые также будут проверены), а также пароль и новый пароль. Если установлен новый пароль и пароль такой же, как у пользователя, я поменяю пароль пользователя, но если они оставлены пустыми, это означает, что я не должен менять пароль.
Проблема в том, что у меня есть две формы, относящиеся к одному и тому же объекту, где существует разная проверка для пароля поля. В первом он должен быть не пустым, но во втором он может быть пустым.
В контроллере я проверяю объект следующим образом:
public String getUserDetails(@Valid @ModelAttribute("User") User user, BindingResult result, Model model){
if(result.hasErrors()){
//There have been errors
}
...
}
но если пароль пуст, будет ошибка.
Есть ли способ выполнить проверку только в некоторых полях объекта?
Могу ли я, по крайней мере, удалить любую ошибку проверки после проверки?
Какова лучшая практика в этом случае?
Спасибо