2010-01-31 15 views
13

In un GSP, è possibile creare un collegamento diretto a un altro SPG? So che posso usare:collegamento diretto a GSP

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

e UserController definire l'azione foo per mostrare solo la corrispondente GSP

class UserController { 
    def foo = {} 
} 

Ma v'è alcun modo per ottenere lo stesso risultato senza dover creare il vuoto foo azione?

Grazie, Don

risposta

25

Il createLink tag è orientata per l'uso con azioni di controllo e non fare quello che vuoi che al di fuori di un attributo URL.

Si può sempre arrivare a un GSP da direttamente: /user/foo.gsp con una combinazione delle link e resource tag.

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

Othewise è possibile creare una mappatura URL che mappa una richiesta direttamente alla vista.

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

Utilizzando Grails 1.2 è possibile creare un named URL Mapping che mappa direttamente a una visione:

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

e quindi utilizzarlo con il tag link:

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

o

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

C'è un attributo uri questo è undocumented, ma si può vedere nel source:

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

HTH

+0

Ehi Dave, che cosa dovrebbe essere il percorso? Ho provato "/views/p.gsp" e "grails-app/views/p.gsp" Nessuno dei due ha funzionato. –

+0

Rimuovi/viste/fuori dal tuo percorso, basta fare p # invece di p.gsp e dovrebbe risolversi. –

0

Come di Grails 2.x, questo non è possibile. La possibilità di collegarsi direttamente a un file .gsp era un difetto di sicurezza che poteva essere utilizzato per evitare l'annotazione @Secured. Il metodo di mappatura degli URL continua a funzionare anche se visto nella risposta di @Colin Harrington.

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

Problemi correlati