我得到了一个包含大量内容的dataTabel。对于每一行,我在最后一列中都有一个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;
}
}
答案 0 :(得分: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>
在托管bean中,您应该拥有boolean
renderIframeColumn
属性:
private boolean renderIframeColumn;
// getter and setter
注意:在Primefaces 3.5中,p:lightBox
的加载是惰性的,因此iframe
将在显示时加载。所以,如果你可以升级到PF 3.5。