Тернарный оператор не работает для хитрого списка данных в HTL?

Я пытаюсь установить список, чтобы быть одним из списка участников из двух разных объектов obj1 а также obj2и obj1 имеет приоритет над obj2, Итак, у меня есть следующий код:

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

Но когда я запускаю приложение, я получаю ошибку разбора как таковую:

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

Насколько я знаю, троичный оператор работает для операторов htl, не относящихся к хитрым данным. Так есть ли работа вокруг этого или я делаю что-то не так?

1 ответ

Решение

Если код, который вы разместили, действительно такой, значит, вы пропускаете кавычки:

Ваш код:

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

С цитатами:

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

Кроме того, я бы посоветовал вам сделать такую ​​логику в вашей модели слинга. Я знаю, что это заманчиво сделать в HTL, но одна из причин, по которой мы используем языки шаблонов, такие как HTL, заключается в том, чтобы отделить бизнес-логику от наших представлений.

Этот код также не тестируется модульными тестами. Так что есть еще одна веская причина перенести это выражение в вашу модель слинга.

Другие вопросы по тегам