三元运算符不适用于 HTL 中的 data-sly-list?

Ternary operator doesn't work for data-sly-list in HTL?

我正在尝试将列表设置为来自两个不同对象 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 语句。那么是否有解决此问题的方法,还是我做错了什么?

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

您的代码:

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

带引号:

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

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

此代码也无法通过单元测试进行测试。因此,还有另一个很好的理由将此表达式移动到您的 Sling 模型中。