Каков правильный способ заполнения модели для индексной страницы в приложении grails? По умолчанию не существует IndexController, есть ли какой-то другой механизм для получения списков этого и того же в модели?Рекомендации для страницы индекса grails
ответ
Я не буду утверждать, что это правильный путь, но это один из способов начать работу. По умолчанию не требуется контроллер. Добавление привязки к UrlMappings.groovy:
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"500"(view:'/error')
"/"
{
controller = "quote"
}
}
}
Затем добавить действие индекса к контроллеру Теперь по умолчанию:
class QuoteController {
def index = {
...
}
}
Если то, что вы хотите загрузить уже является частью другого действия просто перенаправить:
def index = {
redirect(action: random)
}
Или, чтобы действительно получить некоторые повторное собирается, поставить логику в сервис:
class QuoteController {
def quoteService
def index = {
redirect(action: random)
}
def random = {
def randomQuote = quoteService.getRandomQuote()
[ quote : randomQuote ]
}
}
Хороший ответ: Если вам нужно заполнить модель для индексной страницы, пришло время перейти с прямого индекса.gsp на индексный контроллер.
Злой ответ: Если вы создадите фильтр, контроллер которого «*», он будет выполнен даже для статических страниц.
Я не мог использовать приведенный выше пример Эд Т. Возможно, с тех пор Граальс изменился?
После некоторых экспериментов и некоторые рыться в сети, я закончил с этим в UrlMappings.groovy
:
"/"(controller: 'home', action: 'index')
Мой HomeController выглядит следующим образом:
class HomeController {
def index = {
def quotes = = latest(Quote.list(), 5)
["quotes": quotes, "totalQuotes": Quote.count()]
}
}
И в , у меня есть index.gsp
файл. Это делает ненужным файл index.gsp
, поэтому я удалил его.
В Граалей 1.3.6 для просто добавить
"/index.gsp"(uri:"/")
к UrlMappings.groovy работал нормально для меня. Он имеет тот же эффект, что и добавление нового контроллера и сопоставлений, как описано выше.
Ниже мой полный UrlMappings.groovy:
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
"/index.gsp"(uri:"/")
}
}
Я думаю, что UrlMappings, вероятно, следует прочитать ` "/"{контроллер: "цитата"}`. Это не сработало для меня, пока я не изменил значение «=» на «:». – 2012-07-30 17:50:30
`static defaultAction =" random "` - вместо перенаправления из действия индекса вы можете добавить статическое поле defaultAction к контроллеру с желаемым именем действия в качестве значения. – topr 2013-02-23 00:33:28