2016-07-30 13 views
2

非常に単純なテンプレートをgroovy.text.StreamingTemplateEngine(Groovy v2.4.7)で処理しようとしています。テンプレートファイルの内容はすべて次のとおりです。Groovyテンプレート解析エラー:不明なタイプ:IMPORT

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

これは出力が生成されないことがわかります。私はちょうどインポートを動作させるようにしようとしています。私はそのプロセスグルーヴィーなスクリプトでインポートを含め、Groovyのテンプレートの理解何より

#!/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() 

:ここ

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 %> 

が処理をやっているのGroovyコードです:

は、私はこのエラーを取得しますテンプレートは動作しません(それも試しました)。私は他の人が(明らかに)私がしようとしていることをうまくやっているのを見ました。

私は間違っていますか?

私はgrailsの外でこれをやっていることに注意してください。

答えて

0

私自身の質問です。 StreamingTemplateEngineためのGroovyのドキュメントによると:それはimportを理解していないよう

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

これは、明らかに真実ではありません。 Groovyテンプレート内でライブラリをインポートするには、代わりにSimpleTemplateEngineを使用する必要があります。

GSPがインポートを実行できるかどうかを確認するために、Apache TomcatとGroovy Server Pages(gravelなし)を設定することでこれを理解しました。彼らはすることができます。 GSPは、SimpleTemplateEngineを使用するhttps://github.com/groovy/groovy-core/blob/master/subprojects/groovy-servlet/src/main/java/groovy/servlet/TemplateServlet.javaを使用します。