2016-07-30 10 views
2

Ich versuche eine sehr einfache Vorlage über eine groovy.text.StreamingTemplateEngine (Groovy v2.4.7) zu verarbeiten. Hier ist der gesamte Inhalt der Vorlagendatei:Groovy Template Parsing Fehler: Unbekannter Typ: IMPORT

<% import org.yaml.snakeyaml.Yaml %> 

Ich weiß, dass dies keine Ausgabe produzieren wird. Ich versuche nur, den Import zur Arbeit zu bringen.

ich diesen Fehler:

Caught: groovy.text.TemplateParseException: Template parse error 'Unknown type: IMPORT at line: 1 column: 146. File: StreamingTemplateScript1.groovy ' at line 1, column 4 
--> 1: <% import org.yaml.snakeyaml.Yaml %> 

Hier ist der groovy Code, der die Verarbeitung tut:

#!/usr/bin/env groovy 

def engine = new groovy.text.StreamingTemplateEngine() 
def tmplt 

if (args.length == 1) { 
    tmplt = engine.createTemplate(new File(args[0])).make() 
} 
else { 
    tmplt = engine.createTemplate(new BufferedReader(new InputStreamReader(System.in))).make() 
} 

println tmplt.toString() 

Von dem, was ich von Groovy Vorlagen verstehen, einschließlich der Import im groovy-Skript, das Prozesse Die Vorlage wird nicht funktionieren (versuchte das auch). Ich habe andere (scheinbar) erfolgreich dabei beobachtet, was ich versuche zu tun.

Was mache ich falsch?

Beachten Sie, dass ich dies außerhalb von Grails mache.

Antwort

0

beantwortete meine eigene Frage. Nach der Groovy-Dokumentation für die StreamingTemplateEngine:

This engine has equivalent functionality to the SimpleTemplateEngine but creates the template using writable closures making it more scalable for large templates.

Diese scheinbar nicht wahr ist, da es nicht import nicht versteht. Um Bibliotheken in einer Groovy-Vorlage zu importieren, müssen Sie stattdessen SimpleTemplateEngine verwenden.

Ich habe das herausgefunden, indem ich Apache Tomcat und Groovy Server Pages (ohne Grils) eingerichtet habe, um zu sehen, ob GSPs importieren können. Sie können. GSP verwendet https://github.com/groovy/groovy-core/blob/master/subprojects/groovy-servlet/src/main/java/groovy/servlet/TemplateServlet.java, die SimpleTemplateEngine verwendet.