PF 3.3.1、PrettyFaces 3.3.3、およびJSF/Mojarra2.1を使用します。
アプリケーションページの「キャンセル」ボタンを処理するカスタムナビゲーションハンドラーがあります。キャンセルボタンは前の(参照)ページに戻る必要があります。ユーザーのナビゲーションの軌跡を保持するスタックベースのソリューションを実装し、navigationHandlerの実装をほぼ完了しましたが、今は問題が発生しています。キャンセルアクションを実行して、目的のページに戻ることができないようです。私は次のことを試しました:
FacesContext.getCurrentInstance().redirect
私のNavigationHandler.handleNavigation内。
そこで次に、次のようなものを試しました(ここでも、NavigationHandler.handleNavigationで):
BreadCrumbStack.NavDetail navDetail = breadCrumbStack.popLastCrumb(facesContext);
if (navDetail != null) {
navDetail.getPrevViewId() + " ActionMethod: " + navDetail.getActionMethod() + " ActionName: " + navDetail.getActionName());
facesContext.getViewRoot().setViewId(navDetail.getPrevViewId());
parentHandler.handleNavigation(fc, navDetail.getActionMethod(), navDetail.getActionName());
return;
}
ここで問題となるのは、URLMapping(3.3.2にかなり直面している)が、必要なIDがないことを訴えていることです。
PrettyException: Exception occurred while building URL for Mapping Id Required value was null
リダイレクトで使用したかったIDが最後に付いた完全なURLがありますが、カスタムnavigationHandlerのhandleNavigationメソッド内からリダイレクトが正しく機能していないようです。
私がこの問題をエレガントに解決する方法について誰かが何か考えを持っていますか?URLの最後に付けられたID/パラメータは画面ごとに異なる可能性があり、特にソリューションを一緒にハックしたくはありません-どういうわけか、PrettyFacesの事前定義されたクラスにURLを与えることができればいいのですが動作するか、完全なリダイレクトを実行します(これは動作しませんでした)
よろしくお願いします!