三元运算符不适用于 HTL 中的 data-sly-list?
Ternary operator doesn't work for data-sly-list in HTL?
我正在尝试将列表设置为来自两个不同对象 obj1
和 obj2
的成员列表之一,并且 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 模型中。
我正在尝试将列表设置为来自两个不同对象 obj1
和 obj2
的成员列表之一,并且 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 模型中。