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模型中