我想我在使用grails標記解析變量時遇到了一些困難。Grails標記不能解析其體內的變量
在我的標籤庫,我有
def contentArea = {attrs, body ->
def domainObject = Class.forName("${attrs.contentType}", true, Thread.currentThread().contextClassLoader).newInstance()
def numberOfRows = !StringUtils.equals("${attrs.max}", "null")? new Integer("${attrs.max}") : new Integer("1");
def results = domainObject.getByContentAreaKey("${attrs.contentAreaKey}", numberOfRows)
out << g.render(
template: '/layouts/contentTag',
model: [contentAreaKey: attrs.contentAreaKey, results : results, contentNamespace: "${attrs.contentAreaKey}" + "_contentList", body:body()])
out << body()
}
在_contentTag.gsp
,佈局:
<b>In tag layout, </b>
<g:set var="${contentNamespace}" value="bobby"/>
contentNamespace = ${contentNamespace}<br/><!-- prints "minicontent_contentList" -->
minicontent_contentList = ${minicontent_contentList}<br/> <!-- prints "bobby" -->
而在調GSP,標籤被稱爲:
<mynamespace:contentArea var="myVar" contentAreaKey="minicontent" contentType="com.my.test.MiniContentType">
<br/>Test Text<br/>
<b>in calling GSP,</b>
contentNamespace = ${contentNamespace}<br/><!-- prints nothing -->
minicontent_contentList = ${minicontent_contentList}<br/><!-- prints nothing -->
</mynamespace:contentArea>
contentNamespace和minicontent_contentList未在標籤的主體中解析。是否可以解決變量?如果是這樣,我該怎麼做?
如果它對答案有幫助,我有一個包含一些小內容區域的頁面,我希望能夠通過不同的控制器進行管理。內容區域背後都有類似的數據(文本,鏈接,圖形等),但佈局會有所不同。我已經使用sitemesh佈局來阻止頁面,並且調用gsp代表這些sitemesh內容塊之一。
我對grails非常陌生,並且希望能夠在SO上尋求幫助,所以我非常樂意接受批評,但請溫柔。 :)
非常感謝您的回答,我一直在嘗試您的第一個建議的一些變體,但我一直無法在調用gsp中獲取contentNamespace。你確實指示我多調查一下代表,所以希望我很快會有一個突破。 – Jaye