从this post中,我了解到包含StreamedContend
的页面必须与ApplicationScoped bean
相关,但是其结果是,如果我修改某些数据(保存在数据库中)在另一页中,使用StreamedContent
构建的映像不会考虑这些修改
Bean
@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
,因为我可以停留在此页面上并刷新图表很多次,但更像是在打开时这页纸 ?
答案 0 :(得分:0)
也许您可以尝试改用@ViewScoped
。
另一种选择是添加一种更新底层数据的方法,该方法可能由commandButton
触发。
答案 1 :(得分:0)
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
}
}