我正在使用 Primefaces 3.2/JSF 2.0。我有一个 In-Cell 可编辑数据表。当我进入编辑模式时,我有一个输入框和一个按钮,当我单击该按钮时,它会打开一个带有单个选择数据表的对话框。选择一行后,我会更新整个数据表,该表将恢复为只读视图。
我想用我的回调函数中的值更新可编辑单元格。使数据表保持可编辑模式,由于单元格的 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 事件时将保存数据。