如何刷新Application ScopedBean中的数据库数据?
How to refresh DB data in Application ScopedBean?
从 this post 我了解到我的包含 StreamedContend
的页面必须与 ApplicationScoped bean
相关,但是如果我修改某些数据(保存在DB) 在其他页面中,使用 StreamedContent
构建的图像将不会考虑这些修改
豆子
@ManagedBean
@ApplicationScoped
public class ImgBean{
@EJB
private EJUser ejuser;
@PostConstuct
private void init(){
// init some lists and objects from DB
}
public StreamedContent getChart(){
//build and return
}
}
xhtml
<p:graphicImage id="chart" value="#{imgBean.chart}" >
</p:graphicImage>
我的问题是,如何刷新这个 Bean 中的数据,但不是每次都刷新 get
图表,因为我可以停留在这个页面并刷新图表很多次,但更像是什么时候我打开页面?
或许您可以尝试使用 @ViewScoped
。
另一种选择是添加一种更新底层数据的方法,该方法可能由 commandButton
.
触发
metadata
可以达到这个目的,onload
每次打开页面都会调用这里的方法
<f:metadata>
<f:viewAction action="#{bean.onload}" />
</f:metadata>
和
@ManagedBean
@ApplicationScoped
public class ImgBean{
@EJB
private EJUser ejuser;
@PostConstuct
private void init(){
// init some lists and objects from DB
}
private void onload(){
init();
}
public StreamedContent getChart(){
//build and return
}
}
从 this post 我了解到我的包含 StreamedContend
的页面必须与 ApplicationScoped bean
相关,但是如果我修改某些数据(保存在DB) 在其他页面中,使用 StreamedContent
构建的图像将不会考虑这些修改
豆子
@ManagedBean
@ApplicationScoped
public class ImgBean{
@EJB
private EJUser ejuser;
@PostConstuct
private void init(){
// init some lists and objects from DB
}
public StreamedContent getChart(){
//build and return
}
}
xhtml
<p:graphicImage id="chart" value="#{imgBean.chart}" >
</p:graphicImage>
我的问题是,如何刷新这个 Bean 中的数据,但不是每次都刷新 get
图表,因为我可以停留在这个页面并刷新图表很多次,但更像是什么时候我打开页面?
或许您可以尝试使用 @ViewScoped
。
另一种选择是添加一种更新底层数据的方法,该方法可能由 commandButton
.
metadata
可以达到这个目的,onload
每次打开页面都会调用这里的方法
<f:metadata>
<f:viewAction action="#{bean.onload}" />
</f:metadata>
和
@ManagedBean
@ApplicationScoped
public class ImgBean{
@EJB
private EJUser ejuser;
@PostConstuct
private void init(){
// init some lists and objects from DB
}
private void onload(){
init();
}
public StreamedContent getChart(){
//build and return
}
}