三元运算符不适用于HTL中的数据狡猾列表?

时间:2018-03-20 13:56:53

标签: aem sightly htl

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

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

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

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

据我所知,三元运算符适用于非数据狡猾列表的htl语句。那么有没有解决这个问题,或者我做错了什么?

1 个答案:

答案 0 :(得分:3)

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

您的代码:

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

引用:

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

另外我建议你在你的吊带模型中做这样的逻辑。我知道在HTL中这样做是很诱人的,但我们使用像HTL这样的模板语言的原因之一是将业务逻辑与我们的观点分离。

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