簡體   English   中英

如何在Grails中觸發子視圖

[英]How to trigger sub views in Grails

有點不知道哪個是觸發grails中各種模板的最佳方法的問題。 我正在嘗試對菜單進行硬編碼,但仍然針對不同的區域設置了不同的菜單。 我個人發現在數據庫上構建菜單是一種浪費的運行查詢。

快速查看代碼段和方案。 subnav是動態菜單。

<body>
  <div id='navigation'>
    Main menu list
  </div>
  <div id='subnav'>
    Render grails template base on path
    e.g. http://www.example.com/cars/ford => render ${ford} menu template
         http://www.example.com/cars/toyota => render ${toyota} menu template
  </div>
</body>

現在渲染模板很容易,因為我可以使用一個跟隨模板名稱的變量。 例如<g:render template="/layouts/${submenu-name}"/>

我不確定的是設置此變量的最佳方法是什么。 (善惡行為)

我是否使用過濾器並在url / uri中進行調整以獲取我的位置或者我是否每次都在控制器中設置它或者使用我沒想過的東西?

謝謝

編輯:

不確定這是否是最好的做法,但是假設我有一個“汽車模板”和“摩托車模板”,那么我只是使用過濾器在視圖到達之前更改模型。

例如

def filters = {
car(uri:'/car/*') {
    after = { model -> model.menuTpl = 'car' }
}
bike(uri:'/bike/*') {
    after = { model -> model.menuTpl = 'bike' }
}

然后在主視圖中:

<g:render template="/layouts/${menuTpl}" />

我沒有看到任何關於你的過濾器選項的“邪惡”。 但只是為了給出選項,這就是我在我的一個項目中所做的事情。

在我的布局中,正文中有一個標題部分,其中包含一個穿過頁面的樣式欄。 此欄包含“登錄”,“儀表板”,“支持”等標題。因此,在我的login.gsp中,我有以下內容:

<meta name="nav" content="login"/>

在我的main.gsp布局中,我有以下內容:

<g:if test="${pageProperty(name:'meta.nav') == 'login'}">
   <ul id="menu">
      <li>Login</li>
   </ul>
</g:if>

我有幾個塊檢查meta.nav。 他們中的一些甚至不僅僅是文本。 一些拉模板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM