Рендеринг файлов HTML в Grails

Я озирался, но не мог найти способ просто включая или представляющий *.html файлы в Grails. Мое приложение должно g.render или <g:render> шаблоны, которые поставляются как файлы HTML. Для этого, как мы знаем, файлы HTML должны быть преобразованы в _foo.gsp файлы, чтобы быть представленным. Я полностью удивлен относительно того, почему не там прямая поддержка HTML или там один??

Спасибо!

8
задан sector7 15 April 2010 в 14:38
поделиться

2 ответа

Один из очевидных вариантов - просто переименовать ваши HTML-файлы из foo.html в _foo.gsp , а затем используйте . Однако это настолько очевидно, что я уверен, что вы уже думали об этом.

Если вы просто хотите визуализировать HTML-файл из контроллера, вы можете использовать параметр text метода контроллера render

def htmlContent = new File('/bar/foo.html').text
render text: htmlContent, contentType:"text/html", encoding:"UTF-8"

Если вы хотите сделать то же самое из .gsp вы можете написать тег. Что-то вроде следующего (непроверенного) должно работать:

import org.springframework.web.context.request.RequestContextHolder

class HtmlTagLib {

  static namespace = 'html'

  def render = {attrs ->

    def filePath = attrs.file

    if (!file) {
      throwTagError("'file' attribute must be provided")
    }

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

Вы можете вызвать этот тег из GSP, используя

<html:render file="/bar/foo.html"/>
22
ответ дан 5 December 2019 в 06:09
поделиться

Чего вы пытаетесь достичь?

  1. Визуализировать html с контроллера? В этом случае все, что вам нужно сделать, это перенаправить пользователя к файлу из вашего элемента управления.

    redirect (uri: "/ html / my.html")

  2. Использовать html-файлы вместо файлов-шаблонов gsp? Дело в том, что Grails - это платформа "Соглашение о конфигурации" и что означает, что вам придется делать некоторые вещи «способом Грааля». Для файлов нужны _ и .gsp , но имя может быть любым, даже если это проще, если вы используете то же имя, что и контроллер. Вы получаете от этого знание того, что каждый разработчик, который знает grails и приходит в ваш проект, поймет, как все взаимосвязано, и это поможет им быстро приступить к работе.

3
ответ дан 5 December 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: