2010-01-31 10 views
13

En un GSP, ¿es posible crear un enlace directo a otro GSP? Sé que puedo utilizar:enlace directo a GSP

<g:createLink controller="user" action="foo"/> 

y en UserController definir la acción foo apenas mostrar el SGP correspondiente

class UserController { 
    def foo = {} 
} 

pero ¿hay alguna manera de conseguir el mismo resultado sin tener que crear el vacío foo acción?

Gracias, Don

Respuesta

25

El createLink tag está orientado para su uso con las acciones del controlador y no hacer lo que quiera que fuera del atributo url.

Siempre puede obtener un gsp directamente: /user/foo.gsp con una combinación de las etiquetas link y resource.

<g:link url="${resource(dir:'user', file:'foo.gsp')}">user/foo.gsp</g:link> 

O bien, puede crear una asignación de URL que asigne una solicitud directamente a una vista.

class UrlMappings { 
    static mappings = { 
     "/user/foo"(view:"user/foo") 
    } 
} 

Usando Grails 1.2 puede crear una named URL Mapping que se asigna directamente a una vista:

class UrlMappings { 
    static mappings = { 
     name userFoo: "/user/foo"(view:"user/foo") 
    } 
} 

y luego usarlo con la etiqueta de enlace:

<link:userFoo>User Foo</link:userFoo> 

o

<g:link mapping="userFoo">User Foo</g:link> 
13

Hay un atributo uri eso es undocumented, pero se puede ver que en el source:

<a href="${createLink(uri:'/path/page.gsp')}">link</a> 

HTH

+0

Hey David, lo que debería ser el camino? Intenté "/views/p.gsp" y "grails-app/views/p.gsp" Ninguno funcionó. –

+0

Elimina las/vistas/fuera de tu camino, simplemente haz p # en lugar de p.gsp y debería resolverlas. –

0

A partir de Grails 2.x, esto no es posible. La capacidad de vincular directamente a un .gsp era un error de seguridad que se podía usar para evitar la anotación @Secured. El método de mapeo de URL todavía funciona, como se ve en la respuesta de @Colin Harrington.

Ver: GRAILS-7542: Views are accessible via a URL pattern

Cuestiones relacionadas