如何忽略 Groovy 模板引擎中缺少的参数
How to ignore missing parameters in Groovy's template engine
我有一个带有占位符的模板 (e.x. ${PARAM1}),程序成功解析了它们。但是如果我只想解析我传递给模板引擎的占位符而忽略其他 ${} 该怎么办?目前,如果无法解析所有占位符,程序将失败。
static void main(String[] args) {
def template = this.getClass().getResource('/MyFile.txt').text
def parameters = [
"PARAM1": "VALUE1",
"PARAM2": "VALUE2"
]
def templateEngine = new SimpleTemplateEngine()
def output = templateEngine.createTemplate(template).make(parameters)
print output
}
文件:${PARAM1} ${PARAM2} ${PARAM3}
谢谢
老实说,我不确定 groovy 模板引擎是否支持忽略参数的方式; (当相应的参数丢失时,保留占位符)但这里有一个 hack。
import groovy.text.*;
def template = "${PARAM1} ${PARAM2} ${PARAM3} ${PARAM4} ${PARAM5} ${PARAM6}"
//example hard coded params; you can build this map dynamically at run time
def parameters = [
"PARAM1": "VALUE1",
"PARAM2": "VALUE2",
"PARAM3": null,
"PARAM4": "VALUE4",
"PARAM5": null,
"PARAM6": "VALUE6"
]
//this is the hack
parameters.each{ k, v ->
if(!v){
parameters[k] = "$$k"
}
}
def templateEngine = new SimpleTemplateEngine()
def output = templateEngine.createTemplate(template).make(parameters)
print output
输出:
VALUE1 VALUE2 $PARAM3 VALUE4 $PARAM5 VALUE6
我有一个带有占位符的模板 (e.x. ${PARAM1}),程序成功解析了它们。但是如果我只想解析我传递给模板引擎的占位符而忽略其他 ${} 该怎么办?目前,如果无法解析所有占位符,程序将失败。
static void main(String[] args) {
def template = this.getClass().getResource('/MyFile.txt').text
def parameters = [
"PARAM1": "VALUE1",
"PARAM2": "VALUE2"
]
def templateEngine = new SimpleTemplateEngine()
def output = templateEngine.createTemplate(template).make(parameters)
print output
}
文件:${PARAM1} ${PARAM2} ${PARAM3}
谢谢
老实说,我不确定 groovy 模板引擎是否支持忽略参数的方式; (当相应的参数丢失时,保留占位符)但这里有一个 hack。
import groovy.text.*;
def template = "${PARAM1} ${PARAM2} ${PARAM3} ${PARAM4} ${PARAM5} ${PARAM6}"
//example hard coded params; you can build this map dynamically at run time
def parameters = [
"PARAM1": "VALUE1",
"PARAM2": "VALUE2",
"PARAM3": null,
"PARAM4": "VALUE4",
"PARAM5": null,
"PARAM6": "VALUE6"
]
//this is the hack
parameters.each{ k, v ->
if(!v){
parameters[k] = "$$k"
}
}
def templateEngine = new SimpleTemplateEngine()
def output = templateEngine.createTemplate(template).make(parameters)
print output
输出:
VALUE1 VALUE2 $PARAM3 VALUE4 $PARAM5 VALUE6