<mk:pageViewTag>
最初にテンプレートをレンダリングし.gsp
、その本体を内部で実行するというカスタムタグがあります。
タグライブラリ( UtilTagLib.groovy ):
string namespace = "mk"
def pageViewTag = { attrs, body ->
out << render(template: '/templates/pageTagView') {
body()
}
}
...
レンダリングするテンプレート ( templates/_pageTagView.gsp ):
<body>
${ body() }
...
</body>
GSP ( test.gsp )でカスタム タグを使用します。
<mk:pageViewTag>
<g:set name="test" value="${1}">
${test?:0} %{--Here, I got 0. Variable test does not exist!--}%
</mk:pageViewTag>
<g:set>
期待どおりに機能しないタグを除いて、すべてが完全に機能します。Grails は、私が宣言した変数を認識できません。
上記の例では、 variable を宣言test
し、 integer で初期化しました1
。出力として得0
た .
Grails Docsによるとscope
、属性を使用でき、に設定すると問題が解決しrequest
ます。
それ以外に修正できる方法はありますか?なぜこれが起こるのですか?
注意: の内部mk:pageViewTag
は非常に大きいため、変数を外部で宣言することはできません。