Я не могу заставить метод "рендеринга" контроллера grails работать с явным шаблоном
Вопрос
Я только начинаю работу с Grails, и у меня возникла проблема.
У меня есть «контроллер» и " просмотр " для домашней страницы проектов (нет модели для домашней страницы)
Я вызвал представление " index.gsp " и поместил его в каталог views / home
Однако, независимо от того, что я делаю, Grails пытается прочитать страницу " home.gsp " (а затем и home.jsp), несмотря на то, что я явно указал индекс с помощью «шаблона». атрибут в вызове рендеринга.
class HomeController {
String someparameter = "xyzzy"
def index = {
render(view:"home", template:"index") // I also tried "index.gsp" and "home/index.gsp"
}
}
Я думаю, что могу использовать " шаблон " атрибут неверный, потому что я вижу его только в примерах для рендеринга шаблона без просмотра. Однако в документации нет таких ограничений.
Есть ли способ явно указать имя шаблона? Я просто прогнулся и переименовал его в «home.gsp», но я хотел бы понять, что происходит не так.
(Домашняя страница в этом приложении не имеет «модель». Grails будет использовать контроллер, у которого есть модель. В этом примере вы можете получить доступ к «someparameter» в шаблоне gsp как $ {someparameter}.) р>
Решение
Я думаю, вы, возможно, неправильно поняли, что такое Шаблон Grails есть. Думайте о шаблоне как о повторно используемом фрагменте . Шаблон - это GSP, начинающийся с символа подчеркивания, например Нет смысла визуализировать и представление, и шаблон одновременно. На данный момент они взаимоисключающие. Вы хотите реализовать макет? Если это так, см. Документы или объяснение grails.org. По сути, у вас будет _menu.gsp
, который вы обычно визуализируете из другого GSP с помощью тега, такого как < g: render template = " menu " / & GT; код>. Р>
< meta name = " layout " Тег content = " main " >
в теге < head / >
вашего представления, который указывает, что представление будет объединено с main < макет / code>, расположенный в
grails-app / views / layouts / main.gsp