2012-02-07 14 views

risposta

8

Non è possibile definire metodi in GSP. Ma si può avere funzioni anonime se si vuole: D

Esempio:

<% 
    def prettify = { "***$it***" } 
%> 
<h1>${prettify(someText)}</h1> 

Anche se questo esempio non ha molto senso, come quella piccola formattazione potrebbe essere inline. Per qualsiasi tipo di logica aggiuntiva per le visualizzazioni, seguirei OverZealous recommendation e utilizzare un taglib.

+3

Sono d'accordo che nella maggior parte dei casi un Taglib (o un sottomodello chiamato con 'g: render') sono le soluzioni corrette. Ma a volte c'è un po 'di logica ripetuta che è bene scrivere solo una volta in un GSP, ma non garantisce tale promozione a un file esterno. In questi casi, mi piace scrivere in questo modo: ' 'Notate i doppi" {{}} 'che definiscono una chiusura. Quindi lo usi come una funzione normale: '$ {greet (" Sam ")}' – Tobia

6

No. Basta non farlo. Questo è completamente contro lo scopo di un SPG. Il GSP è progettato per gestire le informazioni di markup visivo, non la logica di programmazione. Le funzioni di lancio direttamente all'interno del tuo SPG sostituiranno in un pasticcio di codice non gestibile.

Perché non lo inserisci in un tag? Questo è ciò che i tag sono per; non importa che sia usato solo all'interno del tuo SPG. L'SPG dovrebbe contenere solo logica di visualizzazione e contenuto di output semplici. Il codice riutilizzabile deve sempre essere contenuto in un taglib o in una sorta di controller o servizio per logica complessa.

Non si parla di quale framework si sta utilizzando, come Gaelyk o Grails. (A meno che tu non stia utilizzando Groovy puro sul server per qualche ragione.) Non c'è un modo pratico per raccomandare qui una buona soluzione senza ulteriori informazioni.

Se si utilizzano tag in stile JSP (<% %>) nel proprio SPG, probabilmente si sta sbagliando.

Se si desidera una risposta migliore, fornire informazioni più dettagliate sull'ambiente di programmazione, quale è l'obiettivo e perché (per il motivo per cui non si desidera utilizzare un taglib).

+0

Supponiamo di avere un modello per riga. Questo modello non è al di fuori di questo SPG. È possibile dichiarare template all'interno di GSP? –

+0

Vorrei usare ' MODELLO QUI' – fixitagain

+0

potrebbe essere utile per un piccolo modello interno, come una gerarchia. – Guillaume

Problemi correlati