GStringTemplateEngineのテンプレートで使用する関数を定義したいと思います。GStringTemplateEngineテンプレート内の関数バインディングを定義する方法は?
import groovy.text.GStringTemplateEngine
def prettify = {
return "***${it}***"
}
def var = "test"
def f = new File('index.tpl')
engine = new GStringTemplateEngine()
tpl = engine.createTemplate(f).make([
"var": var,
"prettify": prettify
])
print tpl.toString()
index.tpl:それが例外をスロー
Var: ${var}
Prettified: <% print prettify(var) %>
: 私はそのようなバインディングを使用しようとした
Caught: groovy.lang.MissingMethodException: No signature of method: groovy.tmp.templates.GStringTemplateScript1.prettify() is applicable for argument types: (java.lang.String) values: [test]
Possible solutions: notify(), printf(java.lang.String, [Ljava.lang.Object;), printf(java.lang.String, java.lang.Object), printf(java.lang.String, [Ljava.lang.Object;), identity(groovy.lang.Closure), printf(java.lang.String, java.lang.Object)
しかし、それは働いていません。テンプレートエンジンがブール値へのバインディングでクロージャをキャストするように見えます。どうすればいいのですか?それとも別のテンプレートエンジンを選ぶべきでしょうか?
index.tplの例を教えてください。あなたのコードはうまくいくはずなので、テンプレートでどのように呼び出すのかがもっと問題になるでしょう。 – Rhysyngsun
お返事ありがとうございます!テンプレートコードを追加しました。 – Soid