2016-03-07 64 views
0

我有一個Grails 2.4.x應用程序,其中〜80%的頁面使用simple.gsp佈局,其他頁面都是根本不使用任何佈局/模板的散列器。但他們不能使用simple.gsp,因爲它的內容不適用於他們。在Grails GSP佈局中使用其他佈局

我有需要添加一個標題導航到所有這些頁面(100%),並希望一個優雅的解決方案。理想情況下,我可以創建一個新的佈局,比如awesome-header.gsp,其中包含header nav。然後:

  • 對於任何頁面(再次〜20%),其使用simple.gsp佈局,我只想讓他們直接使用awesome-header.gsp;但後來...
  • 我只是以某種方式引用/導入/擴展simple.gsp(以某種方式)使用awesome-header.gsp;現在允許其它〜80%的網頁使用新標題導航

讓我們假設這是simple.gsp

<!DOCTYPE html> 
<html> 
    <head> 
     <title> 
      <g:layoutTitle default="Some App" /> 
     </title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <!-- Lots of stuff --> 
     <g:layoutHead /> 
     <!-- Lots of stuff --> 
    </head> 
    <body> 
     <!-- Lots of stuff --> 
     <div id="page-content"> 
      <g:layoutBody /> 
     </div> 
     <!-- Lots of stuff --> 
    </body> 
</html> 

而且讓我們假裝這是awesome-header.gsp

<%@ page contentType="text/html;charset=UTF-8" %> 
<html> 
    <head> 
     <title></title> 
    </head> 

    <body> 
     <script id="awesome-header-bootstrap" src="/awesome-header/awesome-header-bootstrap-1.0.js"><script> 
     <g:layoutBody /> 
    </body> 
</html> 

漂亮的準系統。所有我需要這個awesome-header.gsp佈局要做的是在<body>元素的頂部包含一個JS右邊。爲了這個問題的目的,這個JS腳本是「魔術」,併爲我神奇地提取標題導航。

  • 如何可以引用/進口/擴展simple.gsp使用awesome-header.gsp
  • 我不想awesome-header.gsp覆蓋任何titleheader內容(無論是內部simple.gsp或在任何掉隊頁的定義)

任何想法我怎麼能做到這一點的設置?

回答

1

如果我很明白,你想simple.gsp真棒,header.gsp之間的層次結構。所以你可以看看這個link來幫助你做到這一點。

的其他解決辦法,也許比較容易,因爲沒有很多的修改要做的,就是用模板:

  • 把所有的HTML/JS關係到你真棒頭模板內碼(讓說_awesome-header.gsp,在「_」是很重要的)
  • 簡單地說該行的「簡單」佈局內部,並沒有連接到你的「簡單」佈局中的所有其他頁面中:<g:render template='awesome-header'/>