JSF 컨테이너 양식의 ID를 결정하십시오
문제
액션 핸들러 내에서 양식 필드의 ID를 결정해야합니다. 필드는 포함 된 페이스 성분의 일부이므로 양식은 다릅니다.
포함 .xhtml
<ui:component>
<h:inputText id="contained_field"/>
<h:commandButton actionListener="#{backingBean.update}" value="Submit"/>
</ui:component>
example_containing.xhtml
<h:form id="containing_form">
<ui:include src="/included.xhtml"/>
</h:form>
양식의 ID를 어떻게 결정할 수 있습니까? update
런타임에서의 방법? 또는 더 나은 것은 입력 필드의 ID를 직접적으로 제공합니다.
해결책
버튼을 백킹 콩에 바인딩 한 다음 가장 가까운 양식을 찾을 때까지 getParent ()를 사용하십시오.
다른 팁
프로그래밍 방식으로 Jsight의 방법을 사용합니다. 요소의 ID를 알 수 있습니다 (JSF가 작성하지 않으면 ID의 번호를 매기는 수단을 알 수 없습니다). H : 양식은 이름 지정 컨테이너로서 다른 명명 컨테이너로 싸서없는 한 양식을 포함합니다. 포함됩니다. 포함 된 필드 ':' ':'기본적으로 명명 분리기는 JSF이고 ID는 이와 같이 생성됩니다. , (ParentnamingContainerId :)*componentId
업데이트 방법은 ActionListener 유형이므로 다음과 같이 UI 구성 요소에 액세스 할 수 있습니다.
public void update(javax.faces.event.ActionEvent ac) {
javax.faces.component.UIComponent myCommand = ac.getComponent( );
String id = myCommand.getId(); // get the id of the firing component
..... your code .........
}
제휴하지 않습니다 StackOverflow