1

他のページへのリダイレクトには 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");
}
4

1 に答える 1

1

Bean は、たとえ同じページへのViewScopedGET リクエストにも耐えられません。

同じページにとどまっている間は、Ajax および POST リクエストでのみ存続します。

SessionScopedまたはConversationScopedBeanが必要だと思います。

于 2013-07-09T11:56:52.110 に答える