2008-10-13 13 views

Odpowiedz

36

Nie będę twierdził, że to jest właściwa droga, ale jest to jeden ze sposobów na rozpoczęcie rzeczy. Nie ma zbyt wiele, aby kontroler był domyślny. Dodaj mapowanie do UrlMappings.groovy:

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

Następnie dodać akcję indeksu do teraz domyślnego kontrolera:

class QuoteController { 

    def index = { 
     ... 
    } 
} 

Jeśli to, co chcesz, aby załadować jest już częścią innej akcji wystarczy przekierować:

def index = { 
    redirect(action: random) 
} 

Lub naprawdę uzyskać pewne ponowne zamiar umieścić logikę w serwisie:

class QuoteController { 

    def quoteService 

    def index = { 
     redirect(action: random) 
    } 

    def random = { 
     def randomQuote = quoteService.getRandomQuote() 
     [ quote : randomQuote ] 
    } 
} 
+2

myślę, że UrlMappings powinno zapewne czytać ' "/"{Kontroler: "kosztorys"}'. Nie zadziałało to dla mnie, dopóki nie zmieniłem "=" na ":". –

+0

'statyczna defaultAction =" losowa "' - zamiast przekierowania z akcji indeksu do kontrolera można dodać statyczne pole defaultAction z żądaną nazwą akcji jako wartością. – topr

4

Dobra odpowiedź: Jeśli chcesz wypełnić model strony indeksu, czas przejść od użycia prostego indeksu.gsp do kontrolera indeksu.

Zła odpowiedź: Jeśli utworzysz filtr, którego kontrolerem jest "*", zostanie wykonany nawet na stronach statycznych.

19

Nie mogłem pobrać powyższego przykładu Ed T powyżej. Być może Grails zmienił się od tego czasu?

Po kilku eksperymentach, a niektóre grzebać w internecie, skończyło się to w UrlMappings.groovy:

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

Moja HomeController wygląda następująco:

class HomeController { 

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

} 

I , mam index.gsp plik. To sprawia, że ​​plik index.gsp w widokach jest niepotrzebny, więc usunąłem go.

0

w Grails 1.3.6 dla prostu dodając

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

do UrlMappings.groovy pracował dobrze dla mnie. Ma taki sam efekt jak dodanie nowego kontrolera i odwzorowań, jak opisano wcześniej.

Poniżej jest mój pełny UrlMappings.groovy:

class UrlMappings { 

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

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

     "/index.gsp"(uri:"/") 
    } 
} 
+1

Czy przekierowanie z uri działa w UrlMappings? Próbowałem (dla nieco innego zastosowania), a tak się nie stało. Wystąpił błąd, że kontroler ma wartość zerową. Musiałem uciekać się do przekierowania z kontrolera. – mcv