在另一个自定义 tagLib 中动态调用自定义 tagLib
Calling custom tagLib inside another custom tagLib dynamically
我做了两个自定义的tagLib,分别是tabContainer和tab。
def tabContainer = { attrs, body ->
println("body: "+body())
out << '<div class="tab-content">' << body() << '</div>'
}
和
def tab = { attrs, body ->
out << '<div class="tab-pane '+${attrs.active == "true" ? "active" : ""}+'" id="'+attrs.id+'">' << body() << '</div>'
}
现在我想在 tabContainer 中插入选项卡,次数与用户在 GSP 页面中指定的次数一样 -
<myUI:tabContainer>
<myUI:tab id="hello1">Hello1 contents</myUI:tab>
<myUI:tab id="hello2" active="true">Hello2 contents</myUI:tab>
</myUI:tabContainer>
现在,如果我这样做,则会出现以下错误-
Error processing GroovyPageView: Error executing tag <myUI:tabContainer>: Error executing tag <myUI:tab>: No signature of method: myui.myUITagLib.$() is applicable for argument types: (myui.myUITagLib$_closure14_closure15) values: [myui.myUITagLib$_closure14_closure15@2090a569]
需要:用户在 GSP 页面上传递的 tabcontainer
中可以传递任意数量的 tab
。
像这样更改您的标签。它对我有用。
out << '<div class="tab-pane ' + (attrs.active == "true" ? 'active' : '') + '" id="' + attrs.id + '">' << body() << '</div>'
我做了两个自定义的tagLib,分别是tabContainer和tab。
def tabContainer = { attrs, body ->
println("body: "+body())
out << '<div class="tab-content">' << body() << '</div>'
}
和
def tab = { attrs, body ->
out << '<div class="tab-pane '+${attrs.active == "true" ? "active" : ""}+'" id="'+attrs.id+'">' << body() << '</div>'
}
现在我想在 tabContainer 中插入选项卡,次数与用户在 GSP 页面中指定的次数一样 -
<myUI:tabContainer>
<myUI:tab id="hello1">Hello1 contents</myUI:tab>
<myUI:tab id="hello2" active="true">Hello2 contents</myUI:tab>
</myUI:tabContainer>
现在,如果我这样做,则会出现以下错误-
Error processing GroovyPageView: Error executing tag <myUI:tabContainer>: Error executing tag <myUI:tab>: No signature of method: myui.myUITagLib.$() is applicable for argument types: (myui.myUITagLib$_closure14_closure15) values: [myui.myUITagLib$_closure14_closure15@2090a569]
需要:用户在 GSP 页面上传递的 tabcontainer
中可以传递任意数量的 tab
。
像这样更改您的标签。它对我有用。
out << '<div class="tab-pane ' + (attrs.active == "true" ? 'active' : '') + '" id="' + attrs.id + '">' << body() << '</div>'