【发布时间】:2014-03-19 20:37:00
【问题描述】:
我正在使用 primefaces 4。
我正在使用一个可编辑的表格,当我编辑一个单元格时,一个监听器方法被称为传递一个 CellEditEvent
这样
public void onCellEdit(CellEditEvent event) {
/*
* The rowIndex here can be changed according to the sorting/filtering.
* FilteredData starts as null, but primefaces initializes it, so you
* don't have to check for NPE here
*/
int alteredRow = event.getRowIndex();
UIColumn o = event.getColumn();
System.out.println(this.filteredData.get(event.getRowIndex()).get(columns.get(0)));
}
到目前为止,一切都很好。
事件有一个 getRowIndex()
但它没有 getColumnIndex()。
相反,它有一个返回 UIColumn 对象的 getColumn() 方法。
问题是,在调试时,我找不到获取任何列信息(名称、id 等)的方法
我可以破解该列以获得像这样的一些唯一 ID
<p:ajax event="cellEdit" listener="#{myMB.onCellEdit}"/>
<c:forEach items="#{myMB.columns}" var="column" varStatus="loop">
<p:column id="col#{loop.index}" headerText="#{column}" sortBy="#{column}" filterBy="#{column}" filterMatchMode="contains"/>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{dataRow[column]}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{dataRow[column]}" />
</f:facet>
</p:cellEditor>
</p:column>
</c:forEach>
但我仍然找不到从 CellEditEvent 中检索列 ID 的方法
所以,假设一个单元格是有一行和一列的东西,我不得不问
如何在 CellEditEvent 中检索已编辑单元格的列?
ps。我觉得我错过了一些东西,因为没有人会在不提供行和列的情况下创建单元格事件,对吧?
更新 - 似乎我可以得到类似的 ID
org.primefaces.component.column.Column o = (org.primefaces.component.column.Column)event.getColumn();
不过,这对我来说似乎是一个 hack。我仍然对更优雅的解决方案感兴趣;-)
【问题讨论】:
标签: java jsf jsf-2 primefaces