2014-02-12 107 views
0

我們有一個模板化的Grails項目來生成兩個不同的站點。這些網站有兩個不同的Frequently Asked Question頁面,但我們希望保持模板不變。我們正在考慮包含兩個不同的*.groovy文件,其中包含變量,然後將這些變量映射到gsp頁面。或者可能是兩個不同的*.gsp文件,並在啓動時包含正確的文件。如何將靜態內容加載到gsp頁面?

將靜態內容包含到gsp頁面的最佳方法是儘可能多地使用代碼,以及如何去做這件事?

讓我知道你是否需要更多信息。

回答

0

Grails使用concept of templates來重用您的視圖代碼。例如:

*的grails-app /視圖/電子書/ _bookTemplate.gsp *

<div class="book" id="${book?.id}"> 
    <div>Title: ${book?.title}</div> 
    <div>Author: ${book?.author?.name}</div> 
</div> 

的grails-app /視圖/電子書/ someView.gsp

<g:render template="bookTemplate" model="[book: myBook]" /> 

grails- app/views/book/anotherView.gsp

<g:render template="bookTemplate" model="[book: myBook]" /> 

因此,您可以在任何需要使用您的模板的GSP中使用render標記。

0

這有點晚了,但我一直在尋找答案。儘管在Grails中沒有插入靜態文件的直接方式,但您可以通過多種方式來完成。從控制器到自定義標籤。有自定義標籤的代碼:

import org.slf4j.Logger 
import org.slf4j.LoggerFactory 

class HtmlTagLib { 
    // to be used in gsp like <html:render file="WEB-INF/some-static-file.txt"/> 
    // file param is relative to web-app folder 

    static namespace = 'html' 
    private static final Logger log = LoggerFactory.getLogger(HtmlTagLib .class) 

    def render = { attrs -> 

     String filePath = attrs.file 

     if (!filePath) { 
      log.error("'file' attribute must be provided") 
      return 
     } 
     String applicationPath = request.getSession().getServletContext().getRealPath(filePath) 

     def htmlContent = new File(applicationPath).text 
     out << htmlContent 
    } 
} 

貸DONAL上Rendering HTML files in Grails