我得到一个包含大量内容的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;
}
}
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