1

2 つのネストされたタグがある場合、内部タグ バインディングに変数を挿入するにはどうすればよいですか?

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( の内部で使用される)の値を設定する方法です。eqcriteria

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 に答える