【问题标题】:Freemarker ignore missing variablesFreemarker 忽略缺失的变量
【发布时间】:2017-11-16 11:07:29
【问题描述】:

我正在使用 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}

我新生成的文件中的结果只显示了这个变量的第一部分:

${工作流程}

关于如何取回完整变量并在生成的文件中返回的任何想法?

【问题讨论】:

    标签: java variables exception-handling freemarker


    【解决方案1】:

    不支持该用例,至少从 2.3.27 开始。甚至不清楚它应该如何工作,例如,如果缺少的变量是指令的参数怎么办?当然,它只能解决${} 的情况(即使那样,也只有当它出现在字符串文字之外时),但我不确定这是否满足了需求,或者它只是诱使用户使用它然后他们稍后用指令参数碰壁......(或者,另一个棘手的情况,${thisIsMissing + thisExists} 是怎么回事?我想它应该变成${thisIsMissing + 123} 之类的东西......所以这样做会使核心相当复杂。 )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 2020-08-11
      • 2022-01-06
      • 2019-01-22
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多