управляемый компонент bean вызывается дважды - PullRequest
1 голос
/ 21 октября 2011

Возможно, это не большая проблема, но я пытаюсь оптимизировать свое приложение.Это приложение jee6 с фреймворком jsf2.0, primefaces2.1 и glassfish3.1.

У меня есть ситуация, когда при щелчке по commandLink мне нужно выполнить что-то на стороне сервера, а затем перенаправить на другую страницу с некоторымиполучить параметры.И я решил это с помощью p: commandLink с вложенным f: param.Действие возвращает строку, которая является результатом навигации на другую страницу, определенную в Face-Context с помощью redirect и include-view-params = "true".И все работает отлично.НО, когда я посмотрел в трассировке, я увидел, что конструктор управляемого компонента вызывается дважды после рендеринга целевой страницы (вторая страница).Управляемый bean-компонент загружает некоторые данные из базы данных дважды, которые я хотел бы получить

Код:

page1:

...
<p:commandLink value="Go to page2" action="#{bean1.doSmthBefore}">
<f:param name="param1" value="1"/>
</p:commandLink>
...

bean1:

@ManagedBean
@ViewScoped
public class Bean1{
    public void doSmthBefore(){
        ....
        return "page2";
    }
}

page2:

...
<f:metadata>
<f:viewParam name="param1" value="#{bean2.param1}"/>
</f:metadata>
...

bean2:

@ManagedBean
@ViewScoped
public class Bean2{
   String param1;
   public Bean2(){
      sout("Constructor") //<-trace
   }
   //geters seters...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...