我正在尝试编写一个方法:
*.tpl
)
迄今为止的最佳尝试:
String loadParameterizedTemplateByName(String templateName,
String... variables) {
InputStream inputStream =
this.class.classLoader.getResourceAsStream(templateName)
StringWriter writer = new StringWriter()
IOUtils.copy(inputStream, writer, 'UTF-8')
String templateBody = writer.toString()
def binding = variablesAsBinding(variables) // ?!?!
engine.createTemplate(templateBody).make(binding).toString()
}
例如,假设我有以下HelloEmail.tpl
模板文件:
HelloEmail.tpl
==============
Hello ${firstName},
You are awesome! ${someGuy} even says so!
Sincerely,
${me}
然后我想要的调用是:
String firstName = 'John'
String someGuy = 'Mark'
String me = '@smeeb'
String parameterizedTemplate =
loadParameterizedTemplateByName('HelloEmail.tpl', firstName, someGuy, me)
因此,最终结果是parameterizedTemplate
字符串的值为:
println parameterizedTemplate
// Prints:
Hello John,
You are awesome! Mark even says so!
Sincerely,
@smeeb
这里的诀窍是该方法需要能够对任何提供的模板文件使用任何提供的变量列表!
这可以通过反思来实现吗?这意味着TemplateEngine
看起来只是提供的String变量列表,并将它们替换为同名变量(在模板中找到)?
答案 0 :(得分:4)
您可以像这样传递地图:
SELECT DISTINCT user_id FROM cloud_storage;