【问题标题】:Is there a way I can embed Java code inside a YAML file to be processed at runtime.有没有办法可以将 Java 代码嵌入到 YAML 文件中以在运行时进行处理。
【发布时间】:2018-11-13 02:06:38
【问题描述】:

我知道 ruby​​ 有这个使用 ERB 的功能。但是Java有这个能力吗? 我正在尝试做这样的事情:

MY.yaml CURRENT_DATE:

【问题讨论】:

  • 与 Ruby 不同,Java 是一种编译语言。我认为最好的选择是使用 Velocity 或 Freemarker 等模板库。
  • Java 有一个内置的 Javascript 解释器——所以如果你的 YAML 中的代码是 Javascript,你可以把它交给 JS 解释器来评估......
  • 请说明您指的是哪种处理方式。在 YAML 文件中嵌入 Java(源)代码很简单。加载 YAML 的程序只需要能够进行处理,如果处理意味着从文本中提取所有大写字符,这很容易,如果您想在执行 YAML 加载的程序中编译和运行代码,则很难。跨度>

标签: java yaml erb


【解决方案1】:

是的,经典的方式是使用 Java 服务器页面https://en.wikipedia.org/wiki/JavaServer_Pages 类似的东西

Date : <% Date() %>
myArray:
<% for (int i=1; i<4; i++) { %>
    - This  is <% i %> th element.
<% } %>

对于基于现代花括号的模板,请使用 www.thymeleaf.org,或者带有双花括号和其他很酷功能的更好的 JTwig

 CurrentDate: {{ "now"|date("m/d/Y") }}

https://twig.symfony.com/doc/2.x/filters/date.html

【讨论】:

    【解决方案2】:

    我有一个类似的要求,即 YAML 有一个表达式,需要在 Java 运行时解析。

    我们最终为此使用了MVEL。我们读取 yaml 的内容并将表达式传递给 MVEL。它的语法与Java非常相似。

    您也可以尝试其他模板库,例如Velocity Template

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-06
      • 2010-09-12
      • 2020-01-15
      • 2022-10-06
      • 2013-05-25
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      相关资源
      最近更新 更多