有两个嵌套标签,如何将变量注入内部标签绑定?
class CriteriaTagLib {
def criteria = { attrs, body ->
out << "start"
out << body.call()
out << "end"
}
def eq = {
out << "eq${group}"
}
}
进入GSP页面:
<g:criteria>
<g:eq></g:eq>
<g:criteria>
问题是如何在group
内设置eq
(在criteria
内使用)的值。
答案 0 :(得分:3)
<q:criteria>
可以将自己的上下文/数据作为请求范围属性(或页面范围),并在<q:eq>
内部使用它(不要忘记在结束标记时将其删除)。像:
static final CONTEXT = this.class.name
def criteria = { attrs, body ->
def data = [
group: 'test 1'
]
request.setAttribute(CONTEXT, data)
out << "start"
out << body.call()
out << "end"
request.removeAttribute(CONTEXT)
}
def child = { attrs, body ->
def data = request.getAttribute(CONTEXT)
out << 'eq'
out << data.group
}
答案 1 :(得分:0)
内部标记eq
不知道其外部标记criteria
。但你可以实现类似下面的事情,
def criteria = { attrs, body ->
out << "start"
out << body('hello there')
out << "end"
}
def eq = {attrs->
out << "eq${attrs.group}"
}
并在gsp页面中
<g:criteria>
<g:eq group="${it}"/>
</g:criteria>