Osvědčené postupy pro Grails obsahovou stránku

hlasů
27

Jaký je správný způsob, jak naplnit model pro stránku rejstříku v Grails aplikací? Neexistuje žádný IndexController ve výchozím nastavení je tam nějaký jiný mechanismus pro získání seznamů to a to do modelu?

Položena 13/10/2008 v 19:34
uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
4

Dobrou Odpověď: Pokud potřebujete k naplnění model pro indexové stránce, že je čas změnit používat přímý index.gsp k řadiči indexu.

Zlo Odpověď: Pokud vytvoříte filtr, jehož ovladač je ‚*‘, bude to vykonán i pro statické stránky.

Odpovězeno 13/10/2008 v 19:39
zdroj uživatelem

hlasů
36

Nebudu tvrdit, že toto je ta správná cesta, ale je to jediný způsob, jak začít věci pryč. Neznamená to však trvat mnoho mít ovladač jako výchozí. Přidání mapování UrlMappings.groovy:

class UrlMappings {
    static mappings = {
      "/$controller/$action?/$id?"{
            constraints {
                // apply constraints here
            }
        }
      "500"(view:'/error')
     "/"
        {
            controller = "quote"
        }
    }
}

Pak přidejte index akci dnes již standardní řídicí jednotky:

class QuoteController {

    def index = {
        ...
    }
}

Jestli to, co chcete nahrát je již součástí jiné akce jednoduše přesměrovat:

def index = {
    redirect(action: random)
}

Nebo skutečně získat nějaké opětovné děje, dát logiku služby:

class QuoteController {

    def quoteService

    def index = {
        redirect(action: random)
    }

    def random = {
        def randomQuote = quoteService.getRandomQuote()
        [ quote : randomQuote ]
    }
}
Odpovězeno 15/10/2008 v 11:34
zdroj uživatelem

hlasů
20

Nemohl jsem se dostat Ed T výše uvedený příklad pracovat. Možná Grails od té doby změnilo?

Po nějakém experimentování a některé prohrabávat na internetu, jsem skončil s ohledem na tuto UrlMappings.groovy:

    "/"(controller: 'home', action: 'index')

Můj HomeController vypadá takto:

class HomeController {

  def index = {
    def quotes = = latest(Quote.list(), 5)
    ["quotes": quotes, "totalQuotes": Quote.count()]
  }

}

A views/home, mám index.gspsoubor. Že dělá index.gspsoubor v zobrazení zbytečné, tak jsem ji odstranit.

Odpovězeno 05/07/2009 v 22:00
zdroj uživatelem

hlasů
0

V grails 1.3.6 jen za přidání

"/index.gsp"(uri:"/")

na UrlMappings.groovy pracoval dobře pro mě. Bude to mít stejný výsledek jako zadání nového řadiče a mapování, jako je popsáno výše.

Níže je celý můj UrlMappings.groovy:

class UrlMappings {

    static mappings = {
        "/$controller/$action?/$id?"{
            constraints {
                // apply constraints here
            }
        }

        "/"(view:"/index")
        "500"(view:'/error')

        "/index.gsp"(uri:"/")
    }
}
Odpovězeno 03/02/2011 v 08:44
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more