2010-07-08 4 views
1

내 요구 사항은 다음과 같습니다. 텍스트 입력이 있고 값 변경 이벤트가 발생할 때마다 많은 선택 목록 상자가 채워 져야합니다. 일치하는 레코드가 없으면 select many 목록 상자 대신 텍스트 입력이 나타나야합니다. JSF 구성 요소의 가시성을 동적으로 변경하십시오.

<h:column> 
<h:selectManyListbox size="3" value="#{hostInfoBean.gateKeeperendPointReference}" rendered="#{hostInfoBean.selectManyRendered}"        id="gateKeeperendPointReference"> 
<f:selectItems value="#{hostInfoBean.gateKeeperendPointReferenceItems}" /> 
</h:selectManyListbox> 
<h:inputText id="gateKeeperendPointReferenceText" size="30" rendered="#{!hostInfoBean.selectManyRendered}"> 
</h:inputText> 
</h:column> 

또한 I는

<a4j:support event="onchange"     reRender="hostInfo:gateKeeperendPointReference" focus="GFacPath" 
        ajaxSingle="true" /> 

'는 selectManyRendered'I 자바 빈으로 결정하고 부울 값이고, 값 변경 리스너 A4J를 사용하고있다. 이 프로그램은 부울 변수의 기본값에 대해서만 작동합니다. 런타임 중에 부울 값이 변경되면 selectManyListbox와 inputText의 가시성 사이에서 전환이 작동하지 않습니다. 이 문제를 해결할 수 있도록 도와주세요. 내가 놓친 게 있니?

관련, 수레 쉬

답변

4

은 "렌더링"속성이 false로 해결되는 경우는 다음 구성 요소는 트리에없는과 "다시 쓰게"대상으로 찾을 수 없습니다. 조건부로 렌더링되는 구성 요소가있을 경우 항상 다음과 같이 대상으로 사용할 수있는 구성 요소에 래핑하려고합니다.

<h:inputText value="#{myBean.text}" > 
    <a4j:support event="onkeyup" reRender="listZone" ajaxSingle="true" /> 
</h:inputText> 
<h:panelGroup id="listZone"> 
    <h:selectManyListbox value="#{myBean.list}" rendered="#{myBean.renderList}" > 
    <f:selectItems value="#{myBean.listItems}" /> 
    </h:selectManyListbox> 
    <h:inputText size="30" rendered="#{!myBean.renderList}/> 
<h:panelGroup id="listZone"> 
+0

감사합니다. 나는 이것을 시도하고 업데이트 할 것이다. – Suresh