2016-11-24 46 views
0

struts2チェーンの結果が自分自身にリダイレクトされますが、最終的にfalseと評価されて再帰が停止するため、無限ループを作成しません。私はredirectActionが行うことができないPOSTリクエストが必要なので、redirectActionの代わりにチェーンを使用する必要があります。Struts2無限再帰が検出されました

これは私が無限ループ検出がベースとxworkの瓶をしてきた

Could not execute action 
Infinite recursion detected: [/view/myAction!myMethod, /view/myAction, /view/myAction] - [unknown location] 
    at com.opensymphony.xwork2.ActionChainResult.execute(ActionChainResult.java:214) 

を取得していた例外です。チェーンの履歴を調べ、アクション名が見つかると例外をスローします。最大再帰は1にハードコードされています。

連鎖中に例外を処理したり、再帰の最大回数を増やしたり、チェーン履歴を手動でリセットする方法はありますか?

+1

チェーンに時を検出したり、破損するビジネス変数を使用するアクション*チェーン*に*自身*からチェーン履歴を操作する方法を見つけましたか?それは災害のための素晴らしいレシピのように聞こえる。全体の操作を再考する。自分自身にチェーン/リダイレクトしたり、まったくチェーンしたり、POSTを使用したりしないでください。POST/REDIRECT/GETを使用してください。アクション内にある共通ロジックが必要な場合は、そのロジックを抽出してアクション外のビジネスコンポーネントに入れ、必要なすべてのアクションからコールします。 –

答えて

1

私は迎撃

final ActionContext context = invocation.getInvocationContext(); 
    LinkedList<String> chainHistory = (LinkedList<String>) context.get("CHAIN_HISTORY"); 
    // context.put("CHAIN_HISTORY", null); 
関連する問題