Думаю, у меня возникли небольшие трудности с анализом переменных в тегах 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, макетеis:
<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, поэтому я совершенно готов принятькритика, но, пожалуйста, будьте нежны.:)