Primefaces 动态列 p:columns 对特定列进行排序

Primefaces dynamic columns p:columns sort specific columns

我有一个包含动态列的数据表,由 columnModel 定义。字符串 属性 链接到正确的字段(用于值输出)。排序字符串等于 属性,但有些列不应该排序,排序为 null 或 emtpy(两者都试过):

public class ColumnModel {
    private String property;
    private String sort;
    private int width;

    //GETTER
    ...
}

我使用该模型的列表来创建我的动态列。宽度的使用效果很好:

<p:dataTable value="#{bean.items}" var="item" ... >

    <p:columns value="#{bean.columnModel}" var="column" sortBy="#{column.sort}" width="#{column.width}">
        ...
    </p:columns>
</p:dataTable>

我的问题: sortBy 不允许空值或空值。否则我会得到一个解析异常,它说它无法解析#{item.}。 primefaces 似乎在给定的排序字段之前自动添加 'item'(我的数据表变量)。

如何忽略某些列?

感谢您的回答!

将 primefaces 5.0.9 与 Wildfly 9.0.2 结合使用

Primefaces 在 5.1.3 和 5.2.0 版本中为 p:column(s) 添加了新属性:

  • 可排序
  • 可过滤

这是 link 已解决的问题:

https://code.google.com/archive/p/primefaces/issues/5021

示例 取决于我上面的代码:

public class ColumnModel {
    private String property;
    private boolean sortable;
    private int width;

    //GETTER
    ...
}

在 bean 中给定 List<ColumnModel> columnModel

<p:dataTable value="#{bean.items}" var="item" ... >

    <p:columns value="#{bean.columnModel}" var="column" sortBy="#{item[column.property]}" field="#{column.property}" sortable="#{column.sortable}" width="#{column.width}">
        ...
    </p:columns>
</p:dataTable>