我有这个支持 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。
最佳答案
我不知道“在所有 getter 方法之前”是什么意思。至少 @PostConstruct
在构造 bean 和 设置所有托管属性(在 faces-config.xml 中定义的 bean 属性)之后立即被调用。 xml
).
因此大致:
- Bean 构建完成。
- 已设置托管属性。
- @PostConstruct 被调用。
- Bean 被引入 JSF 生命周期。
您的问题很可能是该值被其他内容覆盖了。只需运行调试器或让专家检查您的代码。
关于JSF 1.2 - PostConstruct 是在 getter 之前还是之后执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1804778/