【问题标题】:Enable/Disable columns in dataTable PrimeFaces启用/禁用 dataTable PrimeFaces 中的列
【发布时间】:2014-07-21 11:11:53
【问题描述】:

我在页面中创建了一个数据表并显示了一些列,但我只想显示那些有条目的列(如果任何列没有记录,那么它不应该显示在页面上。)。任何人请告诉我应该如何在这个和显示表上进行验证。

【问题讨论】:

    标签: jsf primefaces datatable


    【解决方案1】:

    您可以在列上使用渲染属性。

    例如,如果您当前的代码类似于Primefaces showcase(其中实体是 Car)中的代码,则您在 bean 上为每一列创建一个方法,如果所有行都为空,则您希望省略。例如对于“颜色”列:

    public Boolean hasAnyCarColor() {
        for (Car car : cars) {
            if (!(car.getColor() == null) && !(car.getColor().isEmpty()))
                return true;   
        }
        return false;
    }
    

    在视图中做:

    <p:column rendered="#{testBean.hasAnyCarColor()}">
        ....
    </p:column>
    

    如果有很多行,您可能希望在 bean 的某些属性中缓存布尔值。

    【讨论】:

    • 感谢 Jaqen 的回复,但如果我在渲染中获得真实值,它将如何禁用该列。并且渲染属性仅用于调用验证方法? (我的意思是获取布尔值)。
    • 是的,“渲染”仅用于确定是否应显示(渲染)组件。许多 JSF 和 Primefaces 组件都有它,它们从 UIComponentBase 继承它。如果渲染=“#{som EL 表达式评估为真}”,它将被显示,如果渲染=“#{某个 EL 表达式评估为假}”,它们将不会显示。在此处查看更多示例:stackoverflow.com/questions/4870462/…
    【解决方案2】:

    我认为这段代码可以帮助你:

    <p:column rendered="#{var.login != null}">
     <h:outputText value="#{var.login}" />
    </p:column>
    

    仅当 var 不为 null 时才会呈现该列

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      相关资源
      最近更新 更多