2013-07-09 31 views
1

我使用NavigationHandler#navigationHandler重定向到其他頁面,但是在它觸發調用的init()方法(@PostConstruct)時。爲什麼?通過navigationHandler重建視圖作用域bean

public void onRowSelect(SelectEvent event) throws IOException { 
    long time = System.currentTimeMillis(); 

    System.out.println("JSF : QuestionnaireListBean : onRowSelect(SelectEvent event)"); 

    FacesContext context = FacesContext.getCurrentInstance(); 
    context.getExternalContext().getApplicationMap().put("questionnaireId", selectedQuestionnaire.getQuestionnaireId()); 
    NavigationHandler navigationHandler = context.getApplication().getNavigationHandler(); 
    navigationHandler.handleNavigation(context, null, "/views/questionnaires/viewDetails.xhtml?faces-redirect=true&includeViewParams=true&questionnaireId=" + selectedQuestionnaire.getQuestionnaireId()); 

    System.out.println("JSF : QuestionnaireListBean : onRowSelect(SelectEvent event) time = " + (System.currentTimeMillis() - time) + "ms"); 
} 

回答

1

A ViewScoped bean不會存活任何GET請求,即使是在同一頁面。

它只會在Ajax和POST請求期間停留在同一頁面上。

我懷疑你需要一個SessionScopedConversationScoped bean。

+0

是的,但我不在目標頁面上使用這個bean。爲什麼是初始化? – dmitrievanthony

+0

它是否是目標頁面上使用的任何其他bean的依賴項? – Aquillo

+0

不,目標頁面bean不包含任何注入或依賴項。 – dmitrievanthony