тимелеаф эквалайзер с ошибкой пружинных переменных?

Я пытаюсь запустить следующее th:if:

th:if="${camelContext.getRouteStatus( route.id )} 'Эй'

но я получаю эту ошибку:

org.thymeleaf.exceptions.TemplateProcessingException: не удалось разобрать как выражение: "${camelContext.getRouteStatus(route.id)} 'Эй'" (camel:92)

Однако, если я попытаюсь

th:if="${camelContext.getRouteStatus( route.id )} › 41 "

Я получаю другую ошибку, но теперь указывающую, что она может анализировать выражение, просто она не может сравнивать строки и числа:

Невозможно выполнить БОЛЬШЕ, ЧЕМ из выражения "${camelContext.getRouteStatus( route.id )} > 41". Слева «Запущено», справа «41» (верблюд: 92)

Это нормально, я просто хотел проверить, правильно ли я пишу синтаксис, и в любом случае я не хочу сравнивать числа, я хочу сравнить строку RouteStatus.

В любом случае, может быть, кто-то может помочь мне с этой проблемой? В основном я хочу сделать if-else для содержимого строки, но я не могу заставить это работать.

Ваше здоровье


person Simen Russnes    schedule 08.11.2013    source источник


Ответы (2)


Вы пробовали это:

th:if="${camelContext.getRouteStatus( route.id )} == 'Hey'"

Может так получится?

Пример на тимелеафе показывает нечто похожее: значения в выражениях можно сравнивать с символами >, ‹, >= и ‹=, как обычно, а также операторы == и != можно использовать для проверки равенства (или отсутствия из него). Обратите внимание, что XML устанавливает, что символы ‹ и > не должны использоваться в значениях атрибутов, поэтому они должны быть заменены символами ‹ и ›.

    th:if="${prodStat.count} gt; 1"
th:text="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')"

Хотя для некоторых из этих операторов существуют текстовые псевдонимы: gt (>), lt (‹), ge (>=), le (‹=), not (!). Также eq (==), neq/ne (!=), иногда лучше придерживаться старых операторов.

person Blejzer    schedule 10.12.2013

Кажется, что ваше выражение неправильно сформировано, но, возможно, это проблема с копированием.

Не могли бы вы попробовать: th:if="${camelContext.getRouteStatus( route.id ) eq 'Hey'} ?

person benjamin.d    schedule 08.11.2013
comment
Я думаю, что затем он пытается интерпретировать все это как пружинное выражение: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "camelContext.getRouteStatus( route.id ) eq 'Hey' " (camel:92) Я также пробовал ${${camelContext.getRouteStatus( route.id )} eq 'Hey'}, но получаю ту же ошибку, что и с вашим предложением. - person Simen Russnes; 09.11.2013
comment
Какую версию тимелеафа вы используете? - person benjamin.d; 12.11.2013