我有一个支持bean的代码:
@PostConstruct
public void refreshData()
{
rows = (int) dd.getRows();
pages = dd.getPages();
getRender();
}
// action
public void getCount(String sql, Object... values)
throws Exception
{
dd.getCount(sql, values);
rows = (int) dd.getRows();
pages = dd.getPages();
}
// getter methods
public boolean getRender() {
System.out.println("pages: "+pages);
boolean rendered = pages > 0? true: false;
return rendered;
}
public int getRows() {
return rows;
}
public int getPages() {
return pages;
}
带有 @PostConstruct 指令的 refreshData()方法是否在所有getter方法之后或之前执行?我问这个因为我注意到 getRender()方法总是返回零,即使 getPages()返回一个像10这样的数字。
答案 0 :(得分:10)
我不知道你在“所有的getter方法之前”是什么意思。在构造bean 和所有托管属性(在@PostConstruct
中定义的bean属性)之后,至少会立即调用faces-config.xml
。
粗略地说:
您的问题可能是该值已被其他内容覆盖。只需运行调试器或让专家审核您的代码。
答案 1 :(得分:7)
JSF 1.2 spec具体说明:
声明在请求,会话或应用程序中的托管bean的方法 范围,用@PostConstruct注释,之后必须由JSF实现调用 执行资源注入(如果有)但在将bean放入范围之前。
(规范中的更多细节)