2013-02-05 78 views
4

正如標題所說......我使用grails構建網頁,並且我知道grails使用sitemesh來網格化GSP。我做了一些Google搜索,並找到了2種方法來「拼貼」gsps(g:applyLayout和g:render模板標籤)。這兩者似乎都在做「拼貼」gsps的工作,所以我的問題是,有什麼區別?<g:applyLayout />和<g:render template />

編輯:

例如,我將使用瓷磚定義。

<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不是你要導航到的頁面(所以「瓷磚」)應該放置在佈局在grails中。所以我想我對這個問題的理解是1.你如何最有效地使用grails/sitemesh來做到這一點,以及2.如果佈局不是我所認爲的那樣,那麼它是什麼?

回答

1

這是一個excellent example,它回答了關於如何最有效地使用grails/sitemesh的問題。

2

我認爲applyLayout和render之間的主要區別在於applyLayout更多地用於將整體樣式/定位應用到頁面的特定頁面或部分。 例如使用

<g:applyLayout name="myLayout" url="http://www.google.com" /> 

會將您的「myLayout」應用到google.com網址頁面,並將其放在您包含該標記的位置。

我對渲染標籤何時應該用於其他任何東西的理解。爲給定的模板gsp部分渲染(創建html)。這是特別方便,能夠呈現HTML(又名模板)的特定部分一遍又一遍對每個項目集合中使用此語法

<g:render template="displaybook" collection="${books}" /> 

但是你可以使用類似

<g:applyLayout name="myLayout" template="displaybook" params="[books: books]" /> 

當您想要將「myLayout」的不同佈局應用於模板「displaybook」時。

希望幫助

湯姆

相關問題