正如标题所说。。。我正在使用grails构建一个网页,我知道grails使用sitemesh来网格GSP。我在谷歌上搜索了一些,找到了两种"平铺"gsps的方法(g:applyLayout和g:render模板标签)。两者似乎都在"平铺"gsp,所以我的问题是,有什么区别?
编辑:
例如,我将使用瓷砖定义。
<tiles-definitions>
<definition name="myapp.homepage" template="/layouts/classic.jsp">
<put-attribute name="title" value="Tiles tutorial homepage" />
<put-attribute name="header" value="/tiles/banner.jsp" />
<put-attribute name="menu" value="/tiles/common_menu.jsp" />
<put-attribute name="body" value="/tiles/home_body.jsp" />
<put-attribute name="footer" value="/tiles/credits.jsp" />
</definition>
</tiles-definitions>
然后使用tiles:addAttribute将页面"注入"到jsp中。
据我所知,任何不是你要导航到的页面的gsp(所以"tiles")都应该放在grails中的布局中。所以我想我熟悉的问题是1。如何使用grails/sitemesh最有效地做到这一点,以及2。如果一个布局不是我所相信的,那么它是什么?
我认为applyLayout和render之间的主要区别在于,applyLayouts更多地用于将整体样式/定位应用于页面的特定页面或部分。例如使用
<g:applyLayout name="myLayout" url="http://www.google.com" />
将您的"myLayout"应用于google.com的url页面,并将其放置在包含该标签的位置。
我对渲染标记何时应该用于几乎所有其他内容的理解。为给定的模板gsp部分进行渲染(创建html)。使用这种语法,能够为集合中的每个项目反复渲染html的特定部分(也称为模板),这是非常方便的
<g:render template="displaybook" collection="${books}" />
然而,你可以使用类似的东西
<g:applyLayout name="myLayout" template="displaybook" params="[books: books]" />
当您想将"myLayout"的不同布局应用于模板"displaybook"时。
希望能帮助
Tom
这里有一个很好的例子,可以回答您关于如何最有效地使用grails/sitemesh的问题。