2
在我的Grails 1.3.7應用程序中,我想使用模板從視圖中分解出周圍的HTML。但是,GSP變量賦值在包含體()中不起作用。我怎樣才能做到以下幾點?如何在Grails模板主體()中分配GSP變量?
_ aTemplate.gsp:
<div class="example">
<% out << body() %>
</div>
aView.gsp:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="layout" content="main" />
</head>
<body>
<g:set var="foo" value="${42}"/>
<% assert foo == 42 : foo %>
<tmpl:/aTemplate>
<g:set var="bar" value="${6}"/>
<% assert bar == 6 : bar %>
</tmpl:/aTemplate>
</body>
</html>
的bar
的分配不會工作:bar
斷言失敗,當我得到http://localhost:8080/myApp/aView.gsp
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException:
Error executing tag<g:render>: Assertion failed:
(bar == 6). Values: bar = null
at /Users/jbeutel/proj/grailsSandboxes/myApp/grails-app/views/aView.gsp:13
如何使模板body()正常工作?
另外,有沒有其他方法可以將周圍的HTML分解出來,同時保持它的平衡?我的用例不在頂層,所以我沒有嘗試過使用佈局。如果我使用TagLib閉包而不是模板文件,變量賦值工作正常,但我不想將很多HTML放入閉包,所以我需要將不平衡的HTML放入模板文件中(也就是說,和身體後)。有沒有更好的辦法?
到多遠使用的佈局有你看?在我看來,他們可能會更有利於解決您的問題。我沒有在你描述的情況下使用它們(所以我沒有足夠的信心發佈一個實際的答案),但[' '](http://grails.org/doc/最新/ ref/Tags/applyLayout.html)似乎可能會提供一些美味的功能。如果沒有別的,它可能不會遭受你觀察到的同樣的行爲,如果以類似的方式使用(但我再次肯定不知道)。只是一個建議。 –
謝謝!內聯佈局起作用。我將'<%out << body() %>'改爲' ',將'view/_aTemplate.gsp'移動到'layouts/aLayout.gsp',並用' '。佈局和正文中的代碼似乎都在工作;我也不需要爲佈局提供參數映射。 –
但是,我遇到了一個問題:佈局只能從控制器獲取模型。除了pageProperty字符串之外,我沒有看到一個方法讓View.gsp傳遞任何東西。 –