私はGrailsコミュニティに比較的慣れていませんが、エンジンが提供するものはすでに気に入っています。現在、ページの標準デザインを簡単に行えるように、カスタムタグライブラリを実装しています。ただし、ユーティリティの目的(データのフィルタリングなど)でヘルパー関数を呼び出したり、タグに関するリクエストレベルのメタデータ(カウンター、親子関係など)を隠したりする方法が必要です。
私は2つの解決策を試みました:
最初に:サービスを作成し、そのスコープを「リクエスト」に設定しました
package myapp
class CustomTagService {
static scope = 'request'
def data = []
def add(localData) {
data.add(localData)
}
}
ただし、タグライブラリに挿入しようとすると
package myapp
class MyTagLib {
def customTagService
def myTag = { attrs, body ->
customTagService.add(attrs)
}
}
エンジンは、リクエストスコープを参照するように私に怒鳴ります(長い苦痛なスタックトレースの後):「スコープ'リクエスト'は現在のスレッドに対してアクティブではありません。シングルトンから参照する場合は、このBeanのスコーププロキシを定義することを検討してください。」
2番目:pageScopeはタグクロージャー内で使用できることを理解しており、以前にそれを利用したことがあります。ただし、私が望んでいる構造では、カプセル化がはるかに望ましいでしょう。
私がこれで間違った道を進んでいるなら、私に知らせてください。任意の提案をいただければ幸いです!