我正在使用jsf 2.0.2 + richfaces 3.3.3。 我该怎么做才能多次调用我的getter?
我有这个:
@ManagedBean(name = "mybean")
@SessionScoped
public class mybean implements Serializable {
public MyClass getMyClass() {
if (FacesContext.getCurrentInstance().getRenderResponse()) {
myClass = get_it_from_database();
}
return myClass;
}
我也用过这个:
@ManagedBean(name = "mybean")
@SessionScoped
public class mybean implements Serializable {
public MyClass getMyClass() {
if (myClass = null) {
myClass = get_it_from_database();
}
return myClass;
}
但我想要的是每当我刷新页面时“刷新”我的数据......
答案 0 :(得分:3)
你不能阻止这一点。这就是吸气剂的本质。 getter方法旨在返回数据(读取:为外部提供接入点),而不是加载数据。你通常在那里使用bean构造函数@PostConstruct
或action方法。
要解决您的特定问题,请将bean重新声明为请求作用域,并将行myClass = get_it_from_database();
移动到bean的构造函数或@PostConstruct
方法(如果它已注入依赖项)。或者,如果你真的坚持保持会话作用域(你应该更喜欢有两个bean:一个会话作用于会话作用域数据,一个请求作用于请求作用域数据),那么你的第一种方法是最合理的。
答案 1 :(得分:0)
使用getter setter创建一个class属性,然后返回刷新它将被维护,ha也使用null检查,如上所述。祝你有愉快的一天