JSF1.2-后构造是在getter之前还是之后执行
我有一个支持bean的代码:JSF1.2-后构造是在getter之前还是之后执行,jsf,testing,Jsf,Testing,我有一个支持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); ro
@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方法之前”是什么意思。至少在构建bean和设置所有托管属性(在
faces config.xml中定义的bean属性)之后,会立即调用@PostConstruct
因此大致上:
Bean被构造
已设置托管属性
@后构造称为
Bean引入了JSF生命周期
您的问题可能是该值被其他内容覆盖。只需运行调试器或让专家检查您的代码。特别指出(第11页,第119项前言):
托管bean上声明为在请求、会话或应用程序中的方法
JSF实现必须在
资源注入是在bean放入范围之前执行的(如果有的话)
(更多详细信息请参见规范。)