我的要求是这样的:我正在输入文本,每当发生值更改事件时,都必须填充选择多个列表框。如果找不到匹配的记录,则必须显示文本输入而不是选择多个列表框。
<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>
此外,我正在使用a4j作为值更改侦听器,
<a4j:support event="onchange" reRender="hostInfo:gateKeeperendPointReference" focus="GFacPath"
ajaxSingle="true" />
'selectManyRendered'是我在JAVA bean中确定的布尔值。该程序仅适用于布尔变量的默认值。如果在运行时期间更改了布尔值,则selectManyListbox和inputText的可见性之间的切换不起作用。请帮忙解决这个问题。我错过了什么吗?
的问候, 苏雷什
答案 0 :(得分:4)
如果“rendered”属性解析为false,则该组件不在您的树中,并且无法作为“rerender”目标找到。当您有条件呈现的组件时,您希望将它们包装在始终可用作目标的组件中,如下所示:
<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">