使用 Primefaces 中的按钮隐藏和显示数据表列

1 jsf primefaces

我得到一个包含很多内容的数据表。对于每一行,我在最后一列中得到一个 iFrame-Link。基于这些链接,该页面需要花费大量时间来加载。
现在我想隐藏此列以获得更快的加载速度。用户应该能够使用按钮显示该列。但我怎样才能意识到这一点呢?以下是专栏内容:

<p:commandButton value="Show book">
  <f:setPropertyActionListener value="true" target="#{rollCommunityBean.renderPhoneColumn}" />
</p:commandButton>

<p:column exportable="false" rendered="#{rollCommunityBean.renderPhoneColumn}">
  <f:facet name="header">
    <h:outputText value="Link" />
  </f:facet>

  <p:lightBox iframe="true" width="750pt" height="650pt">
    <h:outputLink rendered="#{member.username.length() > 0}" value="url" title="#{member.username} - #{member.name} #{member.vorname}">
      <h:outputText icon="ui-icon-person" value="Telefonbuch" />
    </h:outputLink>
  </p:lightBox>
</p:column>
Run Code Online (Sandbox Code Playgroud)

RollCommunityBean

public class RollCommunityBean {
    /*
     * All rendering Booleans
     */

    // For the Phonebook iFrame Column
    private boolean renderPhoneColumn;

    /*
     * All Getter and Setter for the rendering Booleans
     */
    public boolean getRenderPhoneColumn() {
        return renderPhoneColumn;
    }

    public void setRenderPhoneColumn(boolean renderPhoneColumn) {
        this.renderPhoneColumn = renderPhoneColumn;
    }
}
Run Code Online (Sandbox Code Playgroud)

par*_*lov 5

p:columnrendered属性,因此您可以控制其渲染。您应该添加此属性:

<p:column exportable="false" rendered="#{myBean.renderIframeColumn}">
Run Code Online (Sandbox Code Playgroud)

并添加将属性设置为 true 的按钮:

<p:commandButton value="Show column" update="table1">
  <f:setPropertyActionListener value="true" target="#{myBean.renderIframeColumn}"/>
</p:commandButton>
Run Code Online (Sandbox Code Playgroud)

在托管 bean 中,您应该拥有boolean renderIframeColumn以下属性:

private boolean renderIframeColumn;

// getter and setter
Run Code Online (Sandbox Code Playgroud)

注意:在 Primefaces 3.5 中,加载p:lightBox是延迟的,因此iframe将在显示时立即加载。所以如果你可以升级到PF 3.5。