我想使用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调用它的原因是我无法在常规脚本中找到静态方法的包路径。
有没有人有任何具体的例子从模板内调用自己的脚本/类方法,或者可以告诉我我做错了什么?
干杯。