Динамическое изменение видимости компонентов JSF - PullRequest
2 голосов
/ 08 июля 2010

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

    <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.Программа работает только для значения по умолчанию логической переменной.Если логическое значение изменяется во время выполнения, переключение между видимостью selectManyListbox и inputText не работает.Пожалуйста, помогите исправить это.Я что-то упустил?

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

1 Ответ

4 голосов
/ 08 июля 2010

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

<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">
...