java - Primefaces - 如何获取 CellEditEvent 的列

标签 java jsf jsf-2 primefaces

我正在使用 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 中检索已编辑单元格的列?

附言。我觉得我遗漏了什么,因为没有人会在不提供行和列的情况下创建单元格事件,对吗?

更新 - 看来我可以得到像这样的ID

org.primefaces.component.column.Column o = (org.primefaces.component.column.Column)event.getColumn();

不过,这对我来说似乎是一个 hack。我仍然对更优雅的解决方案感兴趣 ;-)

最佳答案

您可以通过返回引用您传递的列标题来获取该列。

在 bean 中你可以这样做:

public void onCellEdit(CellEditEvent event) {  

int alteredRow = event.getRowIndex();
String column_name;
column_name=event.getColumn().getHeaderText();

 // now you can use this to identify the column we are working on.

}

使用 getColumnId() 或 getColumnKey() 返回列 ID,但添加了 primefaces 代码 - 使其难以使用。

关于java - Primefaces - 如何获取 CellEditEvent 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21881767/

相关文章:

java - 保存到 Android 内部存储

java - com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException :

java - j_spring_security_check http 404 使用 SecurityConfig

java - RichFaces 中的服务器端数据表排序

java - 从 javaBean 获取属性

jakarta-ee - javax.faces.FacesException : java. lang.ClassCastException : java. lang.String 无法转换为 javax.faces.component.UIComponent

java - 如何让线程等待文件创建?

jsf - p :ajax getter for update being called before listener

jsf - Primefaces 扩展警告

jsf - 创建和下载 PDF 文件时出现空白页(iText 和 JSF)