JSF 1.2 - PostConstruct 是在 getter 之前还是之后执行

标签 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);
  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).

因此大致:

  1. Bean 构建完成。
  2. 已设置托管属性。
  3. @PostConstruct 被调用。
  4. Bean 被引入 JSF 生命周期。

您的问题很可能是该值被其他内容覆盖了。只需运行调试器或让专家检查您的代码。

关于JSF 1.2 - PostConstruct 是在 getter 之前还是之后执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1804778/

相关文章:

Java EE vs JSP vs JSF

jsf - 有条件地显示 JSF 组件

jsf - h :commandButton with twitter bootstrap or other icon

testing - 有关 docker、测试环境和开发工作流程的查询

ruby-on-rails - 用于测试环境的 Rails 3 Rake 克隆数据库

testing - Asp.net 核心集成测试中的依赖注入(inject)

javascript - 如何在没有网络浏览器交互的情况下在 nightwatch.js 中等待任意时间

jsf - 如果表未渲染,reRender 会如何表现

java - 日历不弹出 PrimeFaces

amazon-web-services - 如何自动启动、执行和停止EC2?