JSON の結果でアクション メッセージを渡す際に固有の問題があります。
現在、アクション内 (JSON アクション内) にアクション メッセージを追加すると、JavaScript でそれを取得し、アクション メッセージをキャプチャして、JGrowl を介してユーザーに警告します。ただし、各アクションにアクション メッセージを追加するロジックは必要ありません。リクエスト間で共有されるリクエスト コンテキストを持つ基盤となるサービス プロジェクトがあり、そこに警告メッセージを追加できます。私がやりたいことは、これらの警告メッセージをフロント エンドで使用するためのアクション メッセージに変換することですが、アクションはそれらを認識する必要はありません。これは、データベースにアクセスするときや複雑なビジネス ルールがある場合などに警告を挿入できるので便利です。
前に述べたように、アクションにそれらを直接追加すると、すでに機能しているため、JSON の結果が正常に機能し、アクション メッセージが正しく渡されることがわかっています。このリクエスト コンテキストを管理するために毎回ヒットするインターセプターがすでにあるので、このインターセプターのアクション メッセージを、呼び出されるアクションに追加したいと思います。
ただし、私が見つけた問題は、その結果として警告メッセージが生成されるため、最初に actionInvocation.invoke() を呼び出す必要があることです。その後、メッセージを確認し、アクション メッセージとして適用しようとします。これらのアクション メッセージは JSON 応答に表示されないため、invoke() 呼び出しの後にインターセプターの応答にこれらのメッセージを追加できるかどうか疑問に思っています。私のインターセプトメソッドの大部分は次のとおりです。
try {
// Invoke the action.
String result = actionInvocation.invoke();
//add all warning messages as an action message to be displayed on that front end
if (CollectionUtils.isNotEmpty(context.getWarningMessages())) {
ActionSupport action = (ActionSupport) actionInvocation.getAction();
for (String s : context.getWarningMessages()) {
action.addActionError(s);
}
}
return result;
invoke() の呼び出しの後ではなく、finally ブロックにアクション メッセージを追加するロジックを追加しようとしましたが、役に立ちませんでした。
ありがとう、アンディ