2012-04-19 11 views
6

Pregunta -Grails - URL mapeo de acción/omisión y fluir

me he dado cuenta de que algunas aplicaciones que tienen prueba con las llamadas a otra vista/controlador de una acción de envío, pero cuando se hace esa página, en lugar de ver :

$ página controlador/$

veo:

controlador $/index

Es éste un problema con la configuración de asignación de URL ? ¿Acción por defecto? Simplemente curioso, porque parece ser el mapeo URI a un valor predeterminado en lugar de la acción real.

código de la vista:

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

controlador:

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 
    } 
} 
} 

Editar

I real descubrí lo que es. Lo que me hace aún más confundido.

The grails actionSubmit tiene una acción relacionada. Esa forma era sólo una forma normal, sin llamada:

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

Así por defecto, la forma vuelve a dirigir la acción a $ controlador/índice. Si agrega una llamada de acción en la etiqueta g: form, esos dos botones se dirigirán a la página correcta, pero el URI ahora será $ controller/$ g: form_action.

Supongo que no entiendo el punto de la acción Acción de envío si se necesita el formulario g: como un contenedor.

+0

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

Respuesta

4

Sí, index es la acción predeterminada para todos los controladores. Entonces, si no especifica uno, esa es la página en la que aterrizará para el controlador.

Se discute con más detalle en su website. Es decir, las reglas son:

  • Si sólo una acción está presente el URI por defecto para un controlador mapas a esa acción.
  • Si define una acción índice que es la acción que maneja las solicitudes cuando no se especifica la acción en el URI/libro
  • Alternativamente se puede establecer de forma explícita con la propiedad defaultAction:

    defaultAction estática = " lista"

+0

Gracias por la respuesta. Sin embargo, la pregunta: una llamada desde una vista usando un actionSubmit va a un método en el controlador que tiene una vista cooresponding (llamada la misma cosa).¿Por qué el URI va a $ controlador/índice en lugar de $ controlador/método? – user82302124

+0

Hm, no estoy seguro. ¿Podría publicar algún código relevante relacionado con su acción? Enviar llamada? – Igor

+0

Fragmento agregado. La página de estadísticas se representa correctamente. Simplemente no es el URI. – user82302124