2014-02-12 3 views
0

У нас есть проект grails, который является шаблоном для создания двух разных сайтов. У сайтов есть две разные страницы Frequently Asked Question, но мы хотели бы оставить шаблон тем же. Мы думали о включении двух разных файлов *.groovy с переменными в них с вопросами, а затем сопоставили эти переменные на странице gsp. Или, может быть, два разных файла *.gsp, а правый - включен при запуске.Как загрузить статический контент на страницу gsp?

Каков наилучший способ включить статический контент в страницу gsp при повторном использовании как можно большего количества кода и как я могу это сделать?

Дайте мне знать, если вам нужна дополнительная информация.

ответ

0

У Grails есть код concept of templates для повторного использования вашего кода просмотра. Например:

* Grails-приложение/просмотров/книга/_bookTemplate.gsp *

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

Grails-приложение/просмотров/книга/someView.gsp

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

grails- приложение/просмотров/книга/anotherView.gsp

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

Таким образом, вы можете использовать тег render в любом GSP, который должен использовать ваш шаблон.

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 
    } 
} 

Кредиты Донал на Rendering HTML files in Grails

Смежные вопросы