사용자의 모든 데이터를 저장하는 사용자라는 개체가 있습니다. 유효성 검사를 수행 할 몇 가지 주석을 가지고 있으며 정상적으로 작동합니다.봄 : 동일한 개체, 다른 유효성 확인
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
}
나는 두 개의 다른 형태 (각각 다른 페이지에 있음)를 가지고 있습니다. 처음에는 사용자를 만들기 위해 사용자 이름과 암호를 묻습니다. 따라서 두 가지 모두 필수적입니다.
두 번째 형식에서는 사용자 이름, 다른 데이터 (유효성이 검사 됨) 및 암호 및 newPassword와 같은 사용자 정보를 보여줍니다. newPassword가 설정되어 있고 암호가 사용자와 동일하면 사용자의 암호가 변경되지만 비어있는 경우 암호를 변경하면 안됩니다.
문제는 필드 암호에 대해 다른 유효성 검사가있는 동일한 개체와 관련된 두 가지 형식이 있다는 것입니다. 처음에는 빈 상태가 아니어야하지만 두 번째 상태에서는 비어있을 수 있습니다.
나는이 방법으로 개체를 확인 컨트롤러에서:
public String getUserDetails(@Valid @ModelAttribute("User") User user, BindingResult result, Model model){
if(result.hasErrors()){
//There have been errors
}
...
}
있지만 암호는 오류가있을 것입니다 비어 있습니다.
개체의 일부 필드에서만 유효성 검사를 수행 할 수있는 방법이 있습니까?
유효성 검사 후 유효성 검사 오류를 제거 할 수 있습니까?
이 경우 가장 좋은 방법은 무엇입니까?
감사
JSR-303 Constraint Groups.http : //stackoverflow.com/a/36345405/1030527을 사용하는 솔루션 (현재는?)이 있습니다. – bernie