【发布时间】:2023-03-03 13:40:01
【问题描述】:
我有一个请求范围 bean,它具有检索一些数据以用于显示目的的方法。
该方法具有多个参数,因此它可以在不同的场合被调用,也可以在同一个视图中。
JSF:
<ui:repeat value="#{bean.data('foo')}"/>
<ui:repeat value="#{bean.data('bar')}"/>
豆子:
public Object[] doSomething(Object arg)
{
Object[] data = //hit database or remote server to retrieve data;
return data;
}
这可以正常工作,但由于 jsf 生命周期阶段,该方法被多次调用为每个 #{bean.data(obj)}。
我只想为每次使用#{bean.data(obj)} 打一次数据库。
我尝试使用以下不起作用的代码进行延迟加载:现在我的 jsf 页面上没有显示任何数据。
private Object[] data;
public Object[] doSomething(Object arg)
{
if (this.data == null)
this.data = //hit database or remote server to retrieve data;
return this.data;
}
viewscope 是否适用于广泛的范围,因为该方法在使用不同参数的视图上多次调用?
【问题讨论】:
标签: jsf request lazy-loading managed-bean