我有用于备用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。
我不知道您所说的“在所有吸气剂方法之前”是什么意思。至少在构造bean之后,立即调用@PostConstruct
和所有托管属性(在faces-config.xml
中定义的bean属性)的设置。
因此大致:
您的问题可能是该值被其他值覆盖。只需运行调试器或让专家检查您的代码即可。
[JSF 1.2 spec特别说(第11页,第119条前言):
声明为在请求,会话或应用程序中的托管bean上的方法用@PostConstruct注释的范围,必须由JSF实现在之后调用执行资源注入(如果有),但在将bean放入作用域之前。
((在规范中有更多详细信息。)