在JSF2.0中刷新托管会话bean
在我将一些数据提交到数据库之后,我希望会话bean自动刷新自己,以反映最近提交的数据。在JSF2.0中使用托管会话bean时如何实现这一点 目前,我必须重新启动web服务器,以便清除会话并重新加载。2种方法:在JSF2.0中刷新托管会话bean,jsf,javabeans,managed-bean,session-bean,Jsf,Javabeans,Managed Bean,Session Bean,在我将一些数据提交到数据库之后,我希望会话bean自动刷新自己,以反映最近提交的数据。在JSF2.0中使用托管会话bean时如何实现这一点 目前,我必须重新启动web服务器,以便清除会话并重新加载。2种方法: 将它们放在视图范围中。在会话范围内存储特定于视图的数据是一种浪费。如果您有性能问题,那么应该集中精力在持久层中实现连接池、DB级分页和/或缓存(例如JPA2支持二级缓存) 添加一个publicload()方法,以便可以从action方法调用它(如果需要,可以从另一个bean调用) 或者来
load()
方法,以便可以从action方法调用它(如果需要,可以从另一个bean调用)
或者来自另一个bean中的操作方法(对于托管bean设计有点偏离常规的情况):
当然,这只会影响当前会话。如果你也想影响其他会话,你应该考虑把它们放在视图范围内,而不是按照第一种方式建议。@ManagedBean
@ViewScoped
public class FooBean {
// ...
}
@ManagedBean
@SessionScoped
public class FooBean {
private List<Foo> foos;
@EJB
private FooService fooService;
@PostConstruct
public void load() {
foos = fooService.list();
}
// ...
}
public void submit() {
fooService.save(foos);
load();
}
@ManagedProperty("#{fooBean}")
private FooBean fooBean;
public void submit() {
fooService.save(foos);
fooBean.load();
}