2012-04-19 13 views
6

Pytanie -Grails - URL mapowanie domyślne działanie i przepływu/

Zauważyłem, że niektóre aplikacje mają testować z połączenia na inny widok/kontroler od złożenia skargi, ale kiedy ta strona jest renderowane zamiast patrzenia :

$ kontroler/$ strona

widzę:

$ kontrolera/indeks

Czy to problem z konfiguracją mapowania URL ? Domyślna akcja? Po prostu ciekawy, ponieważ wydaje się, że jest to mapowanie URI do wartości domyślnej zamiast rzeczywistej akcji.

kod Widok:

<table> 
.. 
<g:actionSubmit class="stats" action="stats" value="View Stats"/> 
.. 
</table 

kontroler:

def stats() { 

    def teamId = Team.get(params.id) 
    def allPlayers = Player.withCriteria { 
      eq('team', teamId) 
      and { 
       eq('isActive', true) 
      } 
    } 
    [allPlayers:allPlayers, teamId:params.id] 
} 

UrlMapping:

class UrlMappings { 

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

Edit

I rzeczywisty domyśliłem się, co to jest. Co sprawia, że ​​jestem jeszcze bardziej zdezorientowany.

Grails actionSubmit ma powiązaną z nim akcję. Ta forma była zwykłą formą, bez wywołania:

<g:form> 
<g:actionSubmit class="stats" action="stats" value="View Stats"/> 
<g:actionSubmit class="schedule" action="schedule" value="View Schedule"/> 
<g:form> 

Domyślnie formularz przekierowuje akcję do kontrolera/indeksu $. Jeśli dodasz wywołanie akcji w tagu g: form, te dwa przyciski przekierują do właściwej strony, ale identyfikator URI będzie teraz kontrolerem $/$ g: form_action.

Domyślam się, że nie otrzymuję punktu działania actionSubmit, jeśli formularz g: jest potrzebny jako opakowanie.

+0

http://jira.grails.org/browse/GRAILS-3086 – user82302124

Odpowiedz

4

Tak, index jest domyślną akcją dla wszystkich kontrolerów. Więc jeśli nie określisz żadnej, to jest strona, na którą wejdziesz do kontrolera.

Zostało to omówione bardziej szczegółowo na temat ich website. Mianowicie, zasady są:

  • Jeśli tylko jedna akcja jest obecny domyślny URI przez mapach kontroler do że działania.
  • Jeśli zdefiniować działanie indeksu, który jest działaniem, które obsługuje żądania gdy brak działania jest określony w URI/książki
  • Alternatywnie można ustawić go jawnie z właściwością defaultAction:

    statyczny defaultAction = " lista”

+0

Dzięki za odpowiedź. Pytanie jednak - wywołanie z jednego widoku za pomocą metody actionSubmit przechodzi do metody w kontrolerze, który ma widok koherentny (o tej samej nazwie).Dlaczego identyfikator URI przechodzi do kontrolera/indeksu $ zamiast kontrolera/metody $? – user82302124

+0

Hm, nie jestem pewien. Czy mógłbyś opublikować odpowiedni kod związany z twoją połączeniem actionSubmit? – Igor

+0

Dodano fragment. Strona statystyk wyświetla się poprawnie. Po prostu nie URI. – user82302124

Powiązane problemy