JSF1.2-后构造是在getter之前还是之后执行

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

我有一个支持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方法之前”是什么意思。至少在构建bean和设置所有托管属性(在
faces config.xml中定义的bean属性)之后,会立即调用
@PostConstruct

因此大致上:

  • Bean被构造
  • 已设置托管属性
  • @后构造称为
  • Bean引入了JSF生命周期
  • 您的问题可能是该值被其他内容覆盖。只需运行调试器或让专家检查您的代码。

    特别指出(第11页,第119项前言):

    托管bean上声明为在请求、会话或应用程序中的方法 JSF实现必须在 资源注入是在bean放入范围之前执行的(如果有的话)

    (更多详细信息请参见规范。)