JSF 1.2 - выполняет ли PostConstruct до или после геттеров - PullRequest
3 голосов
/ 26 ноября 2009

У меня есть этот код для бобов:

@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;
    }

Выполняется ли метод refreshData () с директивой @ PostConstruct после или перед всеми методами получения? Я спрашиваю об этом, потому что замечаю, что метод getRender () всегда возвращает ноль, даже если getPages () возвращает число, например, например 10.

Ответы [ 2 ]

10 голосов
/ 26 ноября 2009

Понятия не имею, что вы имеете в виду под «до всех методов получения». По крайней мере, @PostConstruct вызывается сразу после создания компонента и - установки всех управляемых свойств (свойств компонента, которые определены в faces-config.xml).

Таким образом, примерно:

  1. Боб построен.
  2. Управляемые свойства установлены.
  3. @ PostConstruct называется.
  4. Бин переносится в жизненный цикл JSF.

Ваша проблема, вероятно, в том, что значение было переопределено чем-то другим. Просто запустите отладчик или проверьте свой код экспертом.

7 голосов
/ 26 ноября 2009

Спецификация JSF 1.2 говорит конкретно:

Методы для управляемых bean-компонентов, объявленных как запросы, сеансы или приложения область действия, аннотированная @PostConstruct, должна вызываться реализацией JSF после внедрение ресурсов выполняется (если есть), но до помещения компонента в область действия.

(подробнее в спецификации.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...