2011-09-08 23 views
4

私は、プロジェクトでSpring Web Flowを使用していて、要素のhistory = "discard"属性とhistory = "invalidate"属性を使用したいと考えています。Spring Web Flowによるバックボタンの使用の防止

私はこれらの属性を必要な場所に配置しましたが、移行時に履歴属性を実行した後でビューにナビゲートして動作するかどうかをテストしようとすると、例外ページに移動します。

org.springframework.web.util.NestedServletException:リクエスト処理に失敗しました。ネストされた例外はorg.springframework.webflow.execution.repository.FlowExecutionRestorationFailureExceptionです:問題は、キー「e1s1」

ので確認してフローの実行を回復発生し、できないので、私は歴史からその状態を削除したと言っていますそれを見つける。なぜ私は最初にこの問題を処理するメカニズムが組み込まれていないのかは分かりませんが、この例外をうまく処理する方法を見つけ出すことができず、私はそれらをリダイレクトできますエラーページを表示するか、元の場所に戻すだけでよいでしょう。

<view-state id="page1"> 
    <transition on="gotoNextPage" to="page2" history="invalidate" /> 
</view-state> 
<view-state id="page2"/> 

はPAGE2に戻るボタンを押すと、例外を作成しないようにどのようにこの動作は、達成されることになっているが、ちょうど2ページ目であなたを残し?

+1

ビューとレスポンスが不足していることを考慮すると、明らかにSpring Web Flowは貧弱なユーザベースを持つ非生産準備フレームワークです。私たちが契約にサインする前に、チームリードを見てくれてありがとう。 – Rich

+0

私はあなたの不満に共感します。また、大部分のケースをうまく処理するため、SWFを使用することに決めました。しかし、それがまったくしないような非常に一般的に見える他のものがあります。あなたと同じように、ここではユーザーベースがどこにあるのか、そしてフォーラムではほとんど応答が得られないのだろうかと思います。 – dbreaux

答えて

2

私はこれについて多くの検索をしました。

This old forum postには2つのソリューション(サンプルコードあり)があります。

最初に例外をキャッチし、元のページに戻るforward()にjavascriptを使用するページを表示します。実際には元のページを元に戻します。

第2の解決策は、フロー状態を検査し、それらを最新の有効なフロースナップショットに送信する。

私は、箱入りの解決策がないと思っています。誰もがこの問題に遭遇しなければなりません。 進捗状況に興味のある方はJIRA issue filedがあります。

+0

解決策ではありませんが、私は使用を終了しましたが、私の会社のアプリケーションのほとんどは私のものであるため、受け入れます。 FlowExecutionListenerAdapterを継承して例外を直接処理して、実行手順を1回進めました。(++例外が同じ例外で失敗した場合は無限再帰を防ぐためにクエリパラメータを使用します)、ユーザーを着陸/ログインページ – Rich

関連する問題