1

多くのコンテンツを含む dataTable を取得します。行ごとに、最後の列に 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>

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;
    }
}
4

1 に答える 1

4

p:columnにはrendered属性があるため、レンダリングを制御できます。次の属性を追加する必要があります。

<p:column exportable="false" rendered="#{myBean.renderIframeColumn}">

プロパティをtrueに設定するボタンを追加します。

<p:commandButton value="Show column" update="table1">
  <f:setPropertyActionListener value="true" target="#{myBean.renderIframeColumn}"/>
</p:commandButton>

boolean renderIframeColumnマネージド Bean では、次のプロパティが必要です。

private boolean renderIframeColumn;

// getter and setter

注: Primefaces 3.5 では、のロードp:lightBoxは遅延しているため、iframe表示された瞬間にロードされます。したがって、PF 3.5 にアップグレードできる場合。

于 2013-03-11T11:14:55.243 に答える