我该如何做这样的事情
Inside JSF file, list.xhtml
<p:dataTable value="#{document.drawings}" var="item">
//document is the backing bean that has method getDrawings() that return list of item
</p:dataTable>
Inside my backing bean, document.java
List<Drawing> drawings;
...
public void List<SelectItem> getDrawings(){
if(application first load){
return sessionBean.getAllDrawings();
}else{
return drawings;
}
}
所以逻辑是如果应用程序首先加载,然后通过访问getAllDrawings()
内的方法session bean
从数据源加载每个东西,否则返回drawings
这是绘图列表已被一些ajax方法操纵。
答案 0 :(得分:2)
将其声明为应用程序作用域bean,并将所需的应用程序启动初始化逻辑放在其构造函数中。如有必要,您可以在任何其他请求/会话范围的bean中将其注入<managed-property>
(或者如果您已经在JSF 2.0上,@ManagedProperty
)。
应用程序范围的bean只创建一次,并在webapplication的生命周期内在所有会话/请求之间共享。
答案 1 :(得分:1)
你可以有一个
@PostConstruct
public void init() {
drawings = loadDrawings();
}
但你也可以拥有所谓的“延迟加载”。即:
public void List<SelectItem> getDrawings(){
if(drawings == null) {
drawings = sessionBean.getAllDrawings();
}
return drawings;
}