0
입력이 채워진 경우에만 중첩 된 객체를 인스턴스화 :스프링 MVC - 나는이 모델이
@Entity
public class User {
//...
@NotBlank private String login;
@NotBlank private String password;
@Valid @OneToOne private Person person;
//...
}
// And
@Entity
public class Person {
//...
@NotBlank private String name;
//...
}
그리고 사용자 컨트롤러에서이 삽입 방법 :
@RequestMapping(method = POST)
public String insert(@Valid User user, BindingResult result){
}
그리고이 양식
<p>Login : <input type="text" name="login" /></p>
<p>Pass : <input type="text" name="password" /></p>
<p>Name : <input type="text" name="person.name" /></p>
을
사람과 사용자 간의 연결은 선택 사항입니다. 따라서 person.name
입력을 채울 필요가 없습니다.
컨트롤러가 사용자 정보를 수신 할 때 @Valid
주석이 User 및 Person 객체를 모두 확인하는 경우에도 person.name
이 비어 있습니다.
컨트롤러가 Person 개체 인스턴스를 항상 받는다는 것을 깨달았습니다.
person.name
입력이 채워지지 않은 경우 Person에서 null을받을 수 있습니까?
양식에서 person.name
입력을 제거하면 OK이며 null이 표시됩니다. 그러나 페슨 이름은 선택 사항이며 폼에서 제거 할 수 없습니다.
감사 회신 할 수 있습니다. Person의 인스턴스가 유효성 검사를 통과하지 않기 때문에이 작업이 가능합니다. 이름의 존재를 확인해야합니다 (다른 삽입 양식에 있음). 문제 : 입력이 비어 있어도 나는 여전히 사람의 물건을 받고 있습니다. Person.name을 채우지 않으면 올바른 인스턴스가 생성되지 않습니다. 감사합니다 – user1712326
나는 당신의 코드에서 을 얻었 기 때문에 그것을 생각합니다. 입력을 삭제하면 어떻게됩니까? 그게 효과가 있니? –
또는 자바 스크립트로 트릭을 할 수 있습니다. 사용자가 채우지 않으면 person.name을 공백으로 채 웁니다. 제출시 제출하십시오. –