我认为我的问题与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组件和绑定,但我希望尽可能多地在我的视图中定义图表属性,这样会感觉不对?
答案 0 :(得分:0)
为什么不使用延迟加载?
像:
public Object getValue() {
if(this.value == null) {
// do value loading here
}
return this.value;
}