0

私のアプリケーションには、保存および取得機能があります。オブジェクトがデータベースに保存され、正しく取得されるという点で、保存/取得が機能しています。ただし、検索ランディングページでは、保存されたアプリケーションの状態に応じて、ユーザーとの詳細を検証するか、最後にアクセスしたビューにサイレントに移動します。後者は私が問題を抱えているところです。

春のBeanを使用しており、SaveAndRetrieveページのBeanには次のものがあります。

  @PostConstruct
    public void initialise() {
        caseNotFound = false;
        caseReference = saveAndRetrieveActionHandler.getRequestedCaseReference();
        LOGGER.debug("Retrieve initialise. Case ref is {}", caseReference);
        if (caseReference != null) {

            try {
                saveAndRetrieveActionHandler.retrieveApplicationByCaseRef();
                LOGGER.debug("Retrieve initialise - case found");

                final NavigationOutcome outcome = saveAndRetrieveActionHandler.getLastAccessedView();
                if (outcome.getApplicationState() == ApplicationState.QUOTE) {
                    LOGGER.info("Quote retrieved, navigating to view");
                    // HERE IS WHERE THE TROUBLE LIES! THIS DOESNT WORK
                    FacesUtils.setNextViewNavigation(outcome.getViewId());
                }
            } catch (final FrameworkException fe) {
                LOGGER.debug("Exception caught {}", fe);
                caseNotFound = true;
            }
        }
    }

結果は、特にナビゲートする必要のあるビューとアプリケーションの状態(別の列挙)を含む列挙です。applicationStateがquoteの場合、黙ってナビゲートしたいと思います。他のすべてのapplicationStateについては、ユーザーに確認を求めます。

私のfacesUtilsメソッドは次のとおりです。

public static void setNextViewNavigation(final String p_lastAccessedViewId) {
    if (p_lastAccessedViewId != null) {
        getCurrentViewRoot().setViewId(p_lastAccessedViewId);
    }
}

私もこのメソッドを呼び出してみました

public static void navigateToOutcome(final String p_outcome) {
    final FacesContext context = getFacesContext();
    final NavigationHandler navigationHandler = context.getApplication().getNavigationHandler();
    navigationHandler.handleNavigation(context, null, p_outcome);
}

私の努力にもかかわらず、保存されたページに静かにナビゲートしたいランディングページが表示されています

基本的に、現在のライフサイクルを中止し、viewrootを保存されたビューにリセットしたいと思います。(コンポーネントツリー自体を保存するのではなく、ビジネスオブジェクトのみを保存することに注意してください)

もう1つの情報、これはjsf1.2ですが、ファセットがあります。jsf2固有の機能を使用することも、サードパーティのJSF拡張機能を使用することもできません。

助けてください!

4

1 に答える 1

0

これを解決するには、移動先のページの名前を決定するjsfメソッドであるsrc属性を持つui:includeタグを使用します。

于 2014-01-15T09:34:23.490 に答える