Grails <;g:applyLayout/>;及<;g:渲染模板/>;

Grails <;g:applyLayout/>;及<;g:渲染模板/>;,grails,tags,gsp,sitemesh,Grails,Tags,Gsp,Sitemesh,正如标题所说。。。我正在使用grails构建一个网页,我知道grails使用sitemesh对GSP进行网格化。我通过谷歌搜索找到了两种“平铺”GSP的方法(g:applyLayout和g:render模板标记)。两者似乎都在“平铺”GSP,所以我的问题是,有什么区别 编辑: 例如,我将使用tiles定义 <tiles-definitions> <definition name="myapp.homepage" template="/layouts/classic.jsp"

正如标题所说。。。我正在使用grails构建一个网页,我知道grails使用sitemesh对GSP进行网格化。我通过谷歌搜索找到了两种“平铺”GSP的方法(g:applyLayout和g:render模板标记)。两者似乎都在“平铺”GSP,所以我的问题是,有什么区别

编辑:

例如,我将使用tiles定义

<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。如果一个布局不是我认为的那样,那么它是什么呢?

下面是一个关于如何最有效地使用grails/sitemesh的问题的答案

我认为applyLayout和render之间的主要区别在于,applyLayout更多地用于将整体样式/定位应用于页面的特定页面或部分。 e、 g.使用

<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”时

希望有帮助

汤姆