我使用freemarker生成文件,而且我正在使用templateExeptionHandler部分。我的模板中的变量不必替换(如果它们不存在于数据模型中)。我不想把这些变量放在我的数据模型中,并且具有相同的值(也不能让它工作)我知道我可以'escape' variables in the template itself但我不是真的喜欢那个解决方案。
MyTemplateExceptionHandler如下所示:
class MyTemplateExceptionHandler implements TemplateExceptionHandler {
public void handleTemplateException(TemplateException te, Environment env, Writer out) throws TemplateException {
try {
out.write("${" + te.getBlamedExpressionString() + "}");
} catch (IOException e) {
throw new TemplateException("Failed to print error message. Cause: " + e, env);
}
}
}
问题是,一旦我以下列形式解析变量:
$ {workflow.input.myVariable}
我新生成的文件中的结果只显示了此变量的第一部分:
$ {工作流}
有关如何获取完整变量并在生成的文件中返回的任何想法?
答案 0 :(得分:1)
至少从2.3.27开始,不支持该用例。它甚至不清楚它应该如何工作,比如,如果缺失的变量是指令的参数怎么办?当然,它只能在${}
的情况下解决(即使这样,只有当它出现在字符串文字之外时),但我不确定是否满足了需要,或者它只是诱使使用它然后他们用一个指令参数打了一个墙...(或者,另一个棘手的案例,${thisIsMissing + thisExists}
是什么?我猜它应该变成${thisIsMissing + 123}
之类的东西。所以这样做可以使核心复杂化。)