Я озирался, но не мог найти способ просто включая или представляющий *.html файлы в Grails. Мое приложение должно g.render
или <g:render>
шаблоны, которые поставляются как файлы HTML. Для этого, как мы знаем, файлы HTML должны быть преобразованы в _foo.gsp
файлы, чтобы быть представленным. Я полностью удивлен относительно того, почему не там прямая поддержка HTML или там один??
Спасибо!
Один из очевидных вариантов - просто переименовать ваши 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"/>
Чего вы пытаетесь достичь?
Визуализировать html с контроллера? В этом случае все, что вам нужно сделать, это перенаправить пользователя к файлу из вашего элемента управления.
redirect (uri: "/ html / my.html")
Использовать html-файлы вместо файлов-шаблонов gsp?
Дело в том, что Grails - это платформа "Соглашение о конфигурации" и что означает, что вам придется делать некоторые вещи «способом Грааля». Для файлов нужны _ и .gsp
, но имя может быть любым, даже если это проще, если вы используете то же имя, что и контроллер. Вы получаете от этого знание того, что каждый разработчик, который знает grails и приходит в ваш проект, поймет, как все взаимосвязано, и это поможет им быстро приступить к работе.