ビューがレンダリングされた後に実行するように現在定義されているフィルターがあります。
class MyFilter {
def filters = {
doStuff(controller: '*', action: '*') {
before = {...}
after = {...}
afterView = {
// code I want to run when EVERYTHING is set and done }
Holder.setCurrentData(null)
}
}
}
これは機能するはずですが、フィルター<g:message />
の後にタグ (およびおそらく他のもの。これは現時点で私が興味を持っているものです) が実行されることに気付きました。afterView
このフィルターを使用して、ThreadLocal での現在の実行に関する情報を追跡し、要求が完了したときに自分でクリーンアップしたことを確認したいため、これは問題です。リクエスト/セッション オブジェクトを使用してデータをシャッフルしたくありません。そのままで、ThreadLocal の値を照会できる Holder クラスがあります。
カスタム MessageSource でその ThreadLocal からの情報が必要です。それが、フィルター<g:message />
の後に呼び出されることに気付いた方法です。afterView