Jsf 使用Primefaces中的按钮隐藏和显示dataTable列

Jsf 使用Primefaces中的按钮隐藏和显示dataTable列,jsf,primefaces,Jsf,Primefaces,我得到了一个包含大量内容的数据表。对于每一行,我在最后一列中得到一个iFrame链接。基于这些链接,页面需要花费大量时间来加载。 现在我想隐藏此列以获得更快的加载。用户应该能够用按钮显示列。但我怎么能意识到这一点呢?以下是本专栏的内容: <p:commandButton value="Show book"> <f:setPropertyActionListener value="true" target="#{rollCommunityBean.renderPhoneCol

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

<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>
p:column具有rendered属性,所以您可以控制其呈现。应添加此属性:

<p:column exportable="false" rendered="#{myBean.renderIframeColumn}">
注:在Primefaces 3.5中,p:lightBox的加载是延迟的,因此当显示时,iframe将在瞬间加载。所以,如果您可以升级到PF 3.5。

p:column具有rendered属性,因此您可以控制其渲染。应添加此属性:

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

注:在Primefaces 3.5中,p:lightBox的加载是延迟的,因此当显示时,iframe将在瞬间加载。因此,如果您可以升级到PF 3.5。

看起来不错。但是现在我得到了一个异常,因为Bean名称:{rollCommunityBean.renderPhoneColumn}:Target不可访问,标识符'rollCommunityBean'解析为null我更新了顶部的代码…您的Bean根本不是托管Bean!?添加@ManagedBean和实际范围,例如@SessionScoped。好的,现在我明白了。谢谢你,它几乎完美无瑕。我现在的问题是,当我点击按钮时,我必须用F5刷新站点才能看到该列。我可以不刷新就显示它吗?我编辑了问题。我忘了在p:commandButton.Uhm中添加更新属性。添加了它,但没有改变。。。我的桌子:看起来不错。但是现在我得到了一个异常,因为Bean名称:{rollCommunityBean.renderPhoneColumn}:Target不可访问,标识符'rollCommunityBean'解析为null我更新了顶部的代码…您的Bean根本不是托管Bean!?添加@ManagedBean和实际范围,例如@SessionScoped。好的,现在我明白了。谢谢你,它几乎完美无瑕。我现在的问题是,当我点击按钮时,我必须用F5刷新站点才能看到该列。我可以不刷新就显示它吗?我编辑了问题。我忘了在p:commandButton.Uhm中添加更新属性。添加了它,但没有改变。。。我的表:
<p:commandButton value="Show column" update="table1">
  <f:setPropertyActionListener value="true" target="#{myBean.renderIframeColumn}"/>
</p:commandButton>
private boolean renderIframeColumn;

// getter and setter