1

2 つのデータテーブルを持つフォームに取り組んでいます。最初のデータテーブルでは、ラジオ ボタンとチェックボックスを表示していますが、2 番目のデータテーブルには selectOneMenu(s) が含まれています。値変更リスナーが selectOneMenu に実装されており、値が変更されると、選択内容に基づいて後続のフィールドにデータが入力されます。ドロップダウンから値を選択すると、チェックボックスとラジオボタンの値がクリアされることを除いて、すべて正常に機能します。f:ajax event="change" は、selectOneMenu の変更イベントに使用されています。ページ全体が更新され、値がクリアされたようです。また、selectOneMenuが存在するデータテーブルのIDを更新して、f:ajaxを使用してみました。

        <p:dataTable styleClass="borderless" id="inResultTable" var="result" value="#{RequestBean.fooFields}" rendered="#{not empty RequestBean.fooFields}">
    <p:column style="width:150px;">
    <f:facet name="header">
    <h:outputText value=" " />
    </f:facet>
    <h:outputText value="#{msg[result.fldLabel]}" />
    </p:column>
    <p:column>
    <f:facet name="header">
    <h:outputText value="" />
    </f:facet>
    <ui:repeat value="#{RequestBean.fooFields}"
    var="itm">
    <h:selectOneMenu value="#{itm.indFieldValue}"
    rendered="#{result.lvlid==itm.lvlid}"
    style="width:250px;padding-right:150px;text-align: left;">
    <f:selectItems value="#{RequestBean[itm.indField]}" />
    </h:selectOneMenu>
    <h:selectOneRadio value="#{itm.indFieldValue}" rendered="#{result.lvlid==itm.lvlid and result.fldType=='radio'}"
    style="width:250px;padding-right:150px;text-align: left;">
    <f:selectItems value="#{RequestBean[itm.indField]}" />
    </h:selectOneRadio>
    <h:selectManyCheckbox value="#{itm.indFieldCheckBox}" rendered="#{result.lvlid==itm.lvlid and result.fldType=='selectbox'}">
    <f:selectItems value="#{RequestBean[itm.indField]}" />
    </h:selectManyCheckbox>
    </ui:repeat>
    </p:column>
    </p:dataTable>


    <p:dataTable styleClass="borderless"
    id="resultTable" var="result"
    value="#{RequestBean.depFields}">
    <h:selectOneMenu value="#{RequestBean.field4Value}"
    valueChangeListener="#{RequestBean.processValueChange4}"
    rendered="#{result.lvlid=='5' and result.fldType=='selectbox'}"
    style="width:250px;padding-right:150px;text-align: left;">
    <f:selectItem itemLabel="--Please Select--" itemValue="#{null}" />
    <f:selectItems value="#{RequestBean[result.field]}" />
    <f:ajax event="change" render="@form" />
    </h:selectOneMenu>
    ...
    ...

    </p:dataTable>

注意: チェックボックスとラジオボタンを含むデータテーブルを一番上に配置する必要があります。データベースのエントリに基づいて selecOneMenu を動的に設定しているため、2 番目のテーブルの selectOneMenu に ID を使用することはできません。これは単純な問題かもしれませんが、ほとんどの Web サイトに掲載されている情報ではうまくいきませんでした。どんな助けでも大歓迎です。

4

2 に答える 2