그래서, 당신은 바인딩 빈 속성에 JSR-303 주석을 사용하여 입력 유효성을 검사 할 수 있습니다 :JSF에서 임의의 객체를 검증 하시겠습니까?
class Ticket {
@MinAge(18)
Person person;
}
class Person {
@Min(1) @Max(100)
int age;
}
<p:inputText id="age" value="#{bean.ticket.person.age}" />
을 여기에, 인 person.age가 문제없이 (1..100 사이)을 검증 속성을.
문제는 외부 인스턴스 (person.age> = 18)의 유효성을 검사하려고합니다. 그러나 속성을 bean.ticket.person
으로 확인하는 방법을 확인하는 방법은 무엇입니까?
<p:inputText id="age" value="#{bean.ticket.person.age}">
<f:validate value="#{bean.ticket.person}" />
</p:inputText>
또는 :
문제가<p:inputText id="age" value="#{bean.ticket.person.age}">
<f:validator id="jsr303-validator" value="#{bean.ticket.person}" />
</p:inputText>
, 나는 <f:validator />
에 값을 전달할 수 없습니다
내가 좋아하는 뭔가를 원한다. 유효성 검사 프로세스에 추가 속성을 추가하고 싶은 경우 페이지의 입력 내용 만 표시됩니다.
P. 이것은 단순화 된 예입니다, 실제 응용 프로그램입니다 :
...
<p:inputText id="principalLabel" value="${activeACL.principal.label}" readonly="true" />
<p:commandButton value="Choose..." onclick="choosePrincipalDialog.show()" />
...
<p:commandButton value="Save" action="${bean.saveACL}" oncomplete="editACLDialog.hide()" update="index" />
그리고 형 ACL_DTO의 activeACL : 여기
class ACL_DTO {
...
@IdRequired
Principal_DTO principal;
}
, 처음 null
입니다 choosePrincipalDialog
의의 actionListener 내재적 변경 ${activeACL.principal.id}
. IdRequired는 객체의 id 멤버 속성이 null 또는 -1이 아닌 객체를 제한하는 사용자 정의 제약입니다. 이 방법으로 나는를 다시 사용할 수 없습니다,
class Principal_DTO {
...
@NotNull
@Min(0)
Long id;
}
...
<h:inputHidden id="principalId" value="${activeACL.principal.id}" />
<h:inputText id="principalLabel" ...
그러나 :
비록, 나는 ID 속성에 @NotNull을 사용하여 변경하고 아이디에 대한 검증을 가능하게하는 숨겨진 입력을 추가 할 수 있습니다 유효성 검사 메시지 "이 문자열은 null이 아니어야합니다.", "이 값은 -1이 아니어야합니다."와 같은 메시지를 사용자에게 전달하면 의미가 없습니다.