3

私の要件は次のとおりです。テキスト入力があり、値変更イベントが発生するたびに、複数選択リスト ボックスにデータを入力する必要があります。一致するレコードが見つからない場合は、複数選択リスト ボックスの代わりにテキスト入力を表示する必要があります。

    <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 の可視性の切り替えが機能しません。これを修正するのを手伝ってください。何か不足していますか?

よろしく、Suresh

4

1 に答える 1

4

"rendered" 属性が 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">
于 2010-07-08T18:47:49.320 に答える