1

Primefaces 3.2 /JSF2.0を使用しています。セル内の編集可能なデータテーブルがあります。編集モードに入ると、入力ボックスとボタンがあります。ボタンをクリックすると、単一の選択データテーブルを含むダイアログが開きます。行を選択したら、データテーブル全体を更新して、読み取り専用ビューに戻します。

編集可能なセルをコールバック関数の値で更新したいと思います。データテーブルが編集可能モードのままになるように、セルのIDには行インデックスが含まれているため、入力ボックスを更新できるように、そのIDを取得する方法がわかりません。

これが私のページです

<h:panelGroup id="placesTable">
     <h:form id="placesform" prependId="false" method="post" > 
        <p:dataTable var="item" value="#{placesBean.items}"   id="placesList" widgetvar="placesListVar" editable="true">

        <p:ajax event="rowEdit" listener="#{placesBean.saveRow}" />
...
<p:column headerText="Select Country" style="width:125px" nowrap="nowrap">
        <p:cellEditor>
            <f:facet name="output">
                <h:outputText value="#{item.country}" />
            </f:facet>
            <f:facet name="input">
                <p:inputText id="countryInput"  value="#{item.country}" style="float:left"/>
                <h:outputLink style="float:left" value="javascript:void(0)" onclick="countrySelectDialog.show()">   
                    <p:graphicImage value="/resources/images/select-icon.png" />
                </h:outputLink>
            </f:facet>
        </p:cellEditor>
    </p:column> 

セレクターダイアログのリスナーは次のよう になりますセレクターに複合コンポーネントを使用しています

<p:dialog id="countrySelectDialog" header="Indicator Groups"  height="250" showEffect="explode" hideEffect="explode">
        <h:form prependId="false">
            <selector:countrySelect data="#{countrySelector.countries}" selection="#{placesBean.selectedCountry}">
                <f:facet name="footer">
                    <p:commandButton actionListener="#{placesBean.processSelection}" value="Ok" icon="ui-icon ui-icon-search" oncomplete="countrySelectDialog.hide()" update=":placesTable" process="@form"/>

                </f:facet>              
            </selector:countrySelect>
        </h:form>

</p:dialog>

入力ボックスのIDは次のようになります placesList:0:countryInput、データテーブル全体を更新するのではなく、このセルを更新できるように、ajaxコールバックでこのIDを取得するにはどうすればよいですか。これにより、テーブルが引き続き編集可能モードになり、rowEditイベントが処理されたときにデータが保存されます。

4

0 に答える 0