我有一个名为的自定义标签<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 根本看不到我声明的变量。
在上面的示例中,我声明了变量test
并使用 integer 对其进行了初始化1
。作为我得到的输出0
。
根据Grails Docs我可以使用scope
属性,当设置为request
.
有什么方法可以解决它吗?为什么会发生这种情况?
注意:内部mk:pageViewTag
很大,所以我不能在外面的任何地方声明一个变量。