我想使用Groovy的SimpleTemplateEngine生成一些輸出而不是StringBuilders,但是我無法獲取模板來成功調用其他類中的方法(最終調用其他模板組成一個嵌套鏈)。Groovy嵌套模板 - 無法從模板中調用類中的方法
當模板(下面的例子)調用方法<% generateItemOutput(itemDescriptor.itemList) %>
我得到一個異常:
groovy.lang.MissingMethodException: No signature of method:
SimpleTemplateScript1.generateItemOutput() is applicable for
argument types: (java.util.ArrayList)
我試圖讓所有的方法靜態的,在模板中添加進口靜態方法(如suggested here),但我得到unable to resolve class ...
的進口我用:
SimpleTemplateScript1.groovy: 1: unable to resolve class uk.co.e2x.convert.XMLToSlurp.generateItemOutput
@ line 1, column 20.
out.print(""""""); import uk.co.e2x.convert.XMLToSlurp.generateItemOutput ;
^
下面是我在做什麼,我沒有static
個樣本:
public String generateItemDescriptorOutput(itemDescriptor) {
def params = [itemDescriptor: itemDescriptor]
def template = new groovy.text.SimpleTemplateEngine().createTemplate(itemDescriptorTemplate())
def writeable = template.make(params)
return writeable.toString()
}
public String generateItemOutput(itemList) {
...
}
public String itemDescriptorTemplate() {
return = '''\
${itemDescriptor.name} {
repository = "${itemDescriptor.repository}"
props = [
<% generateItemOutput(itemDescriptor.itemList) %>
]
}
'''
}
我用java -cp ...
調用它,但通過groovy調用相同的問題。我轉移到通過java調用它的原因是我無法在常規腳本中找到靜態方法的包路徑。
有沒有人有任何具體的例子從模板內調用自己的腳本/類方法,或者可以告訴我我做錯了什麼?
乾杯。