Aem 三值运算符不';不适用于HTL中的数据列表?

Aem 三值运算符不';不适用于HTL中的数据列表?,aem,sightly,htl,Aem,Sightly,Htl,我试图将一个列表设置为来自两个不同对象的成员列表obj1和obj2,并且obj1优先于obj2。 因此,我有以下代码: data-sly-list=${obj1.someList ? obj1.someList : obj2.someList} 但是,当我运行应用程序时,会出现如下解析错误: no viable alternative at input '<EOF>' for expression ${obj1.someList? 表达式${obj1.someList在输入“”处

我试图将一个列表设置为来自两个不同对象的成员列表
obj1
obj2
,并且
obj1
优先于
obj2
。 因此,我有以下代码:

data-sly-list=${obj1.someList ? obj1.someList : obj2.someList}
但是,当我运行应用程序时,会出现如下解析错误:

no viable alternative at input '<EOF>' for expression ${obj1.someList?
表达式${obj1.someList在输入“”处没有可行的替代项?

据我所知,三元运算符适用于非数据列表htl语句。因此,是否有解决方法,或者我是否做错了什么?

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

您的代码:

data-sly-list=${obj1.someList ? obj1.someList : obj2.someList}
加上引号:

data-sly-list="${obj1.someList ? obj1.someList : obj2.someList}"
此外,我建议您在Sling模型中使用这种逻辑。我知道在HTL中使用这种逻辑很有诱惑力,但我们使用HTL这样的模板语言的原因之一是将业务逻辑与我们的视图分离


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

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

您的代码:

data-sly-list=${obj1.someList ? obj1.someList : obj2.someList}
加上引号:

data-sly-list="${obj1.someList ? obj1.someList : obj2.someList}"
此外,我建议您在Sling模型中使用这种逻辑。我知道在HTL中使用这种逻辑很有诱惑力,但我们使用HTL这样的模板语言的原因之一是将业务逻辑与我们的视图分离

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