通过navigationHandler重建视图范围的bean

时间:2013-07-09 11:40:51

标签: jsf jsf-2 liferay

我使用NavigationHandler#navigationHandler重定向到其他页面,但是当它触发调用的init()方法(@PostConstruct)时。为什么呢?

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 个答案:

答案 0 :(得分:1)

ViewScoped bean无法在任何GET请求中生存,即使是同一页面也是如此。

只有在停留在同一页面时,它才能在Ajax和POST请求中生效。

我怀疑你需要一个SessionScopedConversationScoped bean。