1

有两个嵌套标签,如何将变量注入内部标签绑定?

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

4

2 回答 2

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  
}
于 2012-08-05T09:33:33.850 回答
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>
于 2012-08-05T19:19:49.857 回答