2009-06-19 10 views
15

Sto provando ad usare la chiamata taglib, ci sono i parametri degli attributi, ma anche le cose all'interno del tag stesso che il link taglib usa. Non riesco a trovare l'attributo da passare a una chiamata g.link() per fare in modo che esegua il rendering del testo del collegamento. Ho già provato "body" e "link" e "text" e "linkText" - nessuno di questi lavori.Grails link taglib uso al di fuori di GSP

mi aspetto di essere in grado di chiamare

g.link(action:"foo", controller:"bar", _____:"text of the link here")

ma non so cosa mettere in _____

risposta

4

Non v'è alcun parametro da passare (nel bene e nel male).

Per ottenere il testo nel collegamento, lo si passa come chiusura.

g.link(action:"foo", controller:"bar") { "text of the link here" }
25

Di solito si fanno in questo modo:

g.link(action:"foo", controller:"bar", "text of the link here") 

Il link di testo non ha bisogno di essere l'ultimo parametro, può apparire ovunque:

g.link("text of the link here", action:"foo", controller:"bar") 

.

Uso con chiusura:

Al posto della stringa è possibile utilizzare una chiusura che restituisce una stringa:

g.link(action:"foo", controller:"bar", {"text of the link here"}) 

E, come per ogni chiusura groove che è l'ultimo parametro per una chiamata di metodo, si può mettere dopo le parentesi di chiusura:

g.link(action:"foo", controller:"bar") {"text of the link here"} 
+1

I documenti non fanno riferimento a questo, ma mostrano una chiusura. Probabilmente i documenti devono essere aggiornati. – user111544

+1

Ho aggiornato la risposta per spiegarlo. – Zim

0

Per ragioni di completezza, dato che non è menzionato nella documentazione: se si sta chiamando i tag (come le chiamate Metod) all'interno del tuo taglib, puoi usare la chiusura per produrre qualsiasi altro contenuto (usando out <<) all'interno del tag esterno. Ad esempio:

out << g.form(method: "post", controller: "login") { 
    out << "Name: " << g.textField(name: "name") << "<br>" 
    out << "Password: " << g.passwordField(name: "password") << "<br>" 
    out << g.submitButton(name: "login") 
} 
Problemi correlati