【问题标题】:YAML store expression languageYAML 存储表达式语言
【发布时间】:2017-09-06 06:25:34
【问题描述】:

我正在尝试将表达式语言存储在 YAML 文件中

"name": "${foo.data:toLower().equals('hello')}"

我尝试将'\' 放在'$'{} 前面,但它不起作用。 我只想将"name" 键设置为上面的表达式语言。

失败的尝试导致name 键获取"toLower().equals('hello')" 的属性

【问题讨论】:

  • 我发现只是转义左大括号似乎会阻止表达式被解析,即:name: $\{test:foo}(没有您使用的双引号)解析为文字字符串“ $\{test:foo}”。但是反斜杠仍然存在,所以你必须在以后使用它时从你的 String 中删除它,我想这真的没有帮助吗?如果您知道您的 name 属性将包含 SpEL,您能否将其设为:name: foo.data:toLower().equals('hello'),然后将其包装在代码中的 ${...} 中?
  • @DaveyDaveDave 感谢您的帮助。我只是把 ${...} 放在后面的代码中。

标签: spring-boot yaml


【解决方案1】:

如果您在双引号字符串中的 $ 前面加上反斜杠 (\),您应该会收到错误消息,因为 \$ 是 YAML 中的未知转义序列。

如果您没有收到该错误,则说明您的解析器已损坏,但您可以通过使用双反斜杠来解决此问题:

"name": "\\${foo.data:toLower().equals('hello')}"

{} 可能还需要它们)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多