2016-08-04 33 views
0

Gibt es Dokumentation darüber, wie ein benutzerdefiniertes Grails-Tag erstellt, die groovy Code ähnlich wie "< g: wenn>" und "< g: else>"?Erstellen Sie benutzerdefinierte Grails Tag Lib der generiert Code

Mit der normalen Grails-Taglib kann ich HTML- oder Raw-Ausgabe erzeugen, aber ich möchte Code ausgeben, der ähnlich wie die Tags if und else interpretiert werden kann.

Hier ist ein Beispiel für den Code Grails Quelle für die "if" tag:

@Override 
protected void outputStartTag(String envExpression, String testExpression) { 
    out.print("if("); 
    out.print(envExpression); 
    out.print(" && "); 
    out.print(testExpression); 
    out.println(") {"); 
} 

Wie kann ich etwas ähnliches in meinem eigenen taglib prefix tun.

Beispiel:

<mine:doSomethingCool key="foo">This text is conditionally shown</mine:doSomethingCool> 

Neben komplexe Logik versteckt, würde ich diese Fähigkeit mag, so kann ich den < g verwenden: else> Tag nach meinem benutzerdefinierten Tag.

Im Allgemeinen möchte ich ein anderes Werkzeug in meiner Toolbox zusätzlich zu dem aktuellen Taglib-Format.

+0

Könnten Sie etwas genauer, was genau willst du erreichen? –

+0

Ja, ich habe die Frage aktualisiert, um etwas genauer zu sein. –

+0

Wenn du das "g: if" -Tag auf Steroiden haben willst, erweitere das ursprüngliche 'if' -Tag – injecteer

Antwort

0

Wenn zum Beispiel möchten, dass Sie nur die bedingten Text machen, wenn key == 'foo', Sie, dass wie dies tun könnte:

class SomethingTagLib { 

    static namespace = "ns" 

    def doSomethingCool = { attrs, body -> 
     if (attrs.key == 'foo') { 
      out << body() 
     } 
    } 
} 

Sie könnten dann mit diesem Tag wie folgt:

<ns:doSomethingCool key="foo">This text is conditionally shown<ns:doSomethingCool> 
+0

Vielen Dank für Ihr Feedback. Ich bin vertraut mit dem Erstellen von Taglibs auf diese Weise. Ich suche nach der komplexeren Version. Ich habe meine Frage aktualisiert, um dies hoffentlich zu reflektieren. –