【问题标题】:PrimeFaces dataTable method called many times [duplicate]PrimeFaces dataTable方法多次调用[重复]
【发布时间】:2017-05-28 17:36:03
【问题描述】:

我有一个带有列的数据表:

<p:dataTable value="#{cc.attrs.bean.model}" 
...
  <p:column style="width:#{bean.getWidth('colDate', 55)}px;"

似乎为表中的每一行调用了bean.getWidth 方法。因此,当有 100 行时,该方法被调用一百次。我希望该方法只被调用一次。

我错了吗?

【问题讨论】:

  • 对于“宽度”来说,它是经常的。如果您记住它是针对一列的,但如果您想使用它来设置单个列-行 combinations(= 一个单元格)的样式,那么必须为每一行评估整个样式,并且它必须按行调用。 PrimeFaces 无法知道您想如何使用它,因此必须经常调用它。缓存的答案是要走的路

标签: jsf primefaces


【解决方案1】:

不,没错。 您可以将值缓存到 bean 中或使用 JSTL

<c:set var="width" value="#{bean.getWidth('colDate', 55)}" />

<p:dataTable value="#{cc.attrs.bean.model}" 
 ...
 <p:column style="width:#{width}px;"

您可以在https://stackoverflow.com/tags/jstl/info 找到更多信息。 不要忘记命名空间。

【讨论】:

  • 嗨,我刚试过:&lt;c:set var="colIdWidth" value="20" /&gt;&lt;p:column headerText="Meldungs-Nr." style="width:#{colIdWidth}px;" 似乎不起作用
  • 错误?例外?
【解决方案2】:

您可以将 getWidth 的结果保存在托管 bean 属性中,然后在列样式中使用它

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 2017-07-07
    • 2011-06-14
    • 2015-12-27
    • 2017-01-08
    • 2014-08-15
    • 2016-08-19
    • 2013-10-22
    相关资源
    最近更新 更多