JSF EL评估

时间:2013-11-05 09:01:14

标签: jsf primefaces el

我认为我的问题与BalusC的答案有关:Evaluation of EL during view build time

我正在尝试使用JSF2复合组件显示一系列Primefaces BarCharts,并将自定义Chart对象作为属性传递。 Chart对象包含图表名称,标题和对DAO对象的调用以检索数据模型。这是我的复合组件。

<composite:interface>
    <composite:attribute name="chart" />
</composite:interface>
<composite:implementation>
    <p:barChart id="#{cc.attrs.chart.name}" title="#{cc.attrs.chart.title}" value="#{cc.attrs.chart.model}" 
            style="width:300px" legendPosition="ne" xaxisAngle="45"/>
</composite:implementation>    

当Primefaces呈现条形图对象时,它会对条形图对象进行三次getValue()调用,并且如上面的链接所述,只存储了EL表达式“#{cc.attrs.chart.model}” 。这导致每次在Primefaces内部调用getValue时进行新的模型评估,因此三次往返数据库。

有没有办法评估cc.attrs.chart.model一次并将其用作图表的值属性?

我想我可以使用图表UI组件和绑定,但我希望尽可能多地在我的视图中定义图表属性,这样会感觉不对?

1 个答案:

答案 0 :(得分:0)

为什么不使用延迟加载?

像:

public Object getValue() {
  if(this.value == null) {
    // do value loading here   
  }
  return this.value;
}