【问题标题】:Ternary operator doesn't work for data-sly-list in HTL?三元运算符不适用于 HTL 中的 data-sly-list?
【发布时间】:2018-03-20 13:56:53
【问题描述】:

我正在尝试将列表设置为来自两个不同对象 obj1obj2 的成员列表之一,并且 obj1 优先于 obj2。 所以我有以下代码:

data-sly-list=${obj1.someList ? obj1.someList : obj2.someList}

但是当我运行应用程序时,我得到一个解析错误:

no viable alternative at input '<EOF>' for expression ${obj1.someList?

据我所知,三元运算符适用于非 data-sly-list htl 语句。那么有没有办法解决这个问题还是我做错了什么?

【问题讨论】:

    标签: aem sightly htl


    【解决方案1】:

    如果您发布的代码确实是这样,您似乎缺少引号:

    您的代码:

    data-sly-list=${obj1.someList ? obj1.someList : obj2.someList}
    

    带引号:

    data-sly-list="${obj1.someList ? obj1.someList : obj2.someList}"
    

    此外,我建议您在 Sling 模型中执行此类逻辑。我知道在 HTL 中这样做很诱人,但我们使用 HTL 等模板语言的原因之一是将业务逻辑与我们的视图分离。

    此代码也不能通过单元测试进行测试。所以还有另一个很好的理由将此表达式移到您的 Sling 模型中。

    【讨论】:

      猜你喜欢
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 2018-03-14
      • 2012-10-08
      • 2017-11-13
      相关资源
      最近更新 更多