Я не могу заставить метод "рендеринга" контроллера grails работать с явным шаблоном

StackOverflow https://stackoverflow.com/questions/1225817

  •  22-07-2019
  •  | 
  •  

Вопрос

Я только начинаю работу с 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, начинающийся с символа подчеркивания, например _menu.gsp , который вы обычно визуализируете из другого GSP с помощью тега, такого как < g: render template = " menu " / & GT; .

Нет смысла визуализировать и представление, и шаблон одновременно. На данный момент они взаимоисключающие.

Вы хотите реализовать макет? Если это так, см. Документы или объяснение grails.org.

По сути, у вас будет < meta name = " layout " Тег content = " main " > в теге < head / > вашего представления, который указывает, что представление будет объединено с main < макет / code>, расположенный в grails-app / views / layouts / main.gsp

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top