私はいくつかの基本的なユーティリティ機能を持っている私のコントローラに追加するmixinを作成しています。ミックスインで実行したい機能の1つは、g.message
taglibを使用して文字列にエラーを解決することです。残念ながら、静的なmixinメソッド内のGrailsApplication
にアクセスできないようです。MixinでGrailsApplicationにアクセスするには?
mixinからGrailsタグライブラリにアクセスするにはどうすればよいですか、それとも私がやっていることを達成する良い方法がありますか?すべてのコントローラ間で共通のコードを共有していますか?
私が実行しているコードは次のとおりです。私は、問題は静的メソッドでGrailsのタグLIBSにアクセスする方法であると思う:
static def preparePostResponse(domainInstance) {
def grailsApplication = new User().domainClass.grailsApplication
def postResponse = new AjaxPostResponse(domainObject: domainInstance)
if (domainInstance.hasErrors()) {
g.eachError(bean: domainInstance) {
postResponse.errors."${it.field}" = g.message(error: it)
}
postResponse.success = false
postResponse.message = "There was an error"
}
else {
postResponse.success = true
postResponse.message = "Success"
}
return postResponse
}
私はあなたの提案を試みたが、grailsApplicationがアクセス可能でしたが、私がnull入門しましたポインタの例外はgroovyの腸のどこかにある。私は静的メソッド内でg:タグ、g:forEachを使用することに関連していると思います。私はこのメソッドをコントローラ自体に移しました - まだ静的にしていますが、この例外がありました。 '静的なスコープ内に見かけの変数 'g'が見つかりましたが、ローカル変数は参照しませんでした。静的メソッドからg:タグにアクセスできますか? –