2010-07-08 2 views
1

Мое требование таково: у меня есть ввод текста, и всякий раз, когда происходит событие изменения значения, необходимо заполнить поле для выбора большого количества. Если найденных совпадающих записей не найдено, вместо текстового ввода следует выбрать текстовый ввод.Динамическое изменение видимости компонентов 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> 

Также я использую a4j для слушателя изменения значения,

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

'selectManyRendered' является логическим значением, которое я Определив в Java Bean. Программа работает только для значения по умолчанию для булевой переменной. Если во время выполнения логическое значение изменяется, то переключение между видимостью selectManyListbox и inputText не работает. Пожалуйста, помогите исправить это. Я что-то упускаю?

С уважением, Суреш

ответ

4

Если «оказывается» атрибут решает ложно, то компонент не в дереве, и не может быть найден как «засавить» цели. Если у вас есть компоненты, которые предоставляются условно, вы хотите их обернуть в компонент, который всегда доступен в качестве цели, например:

<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