Thymeleaf сравнивает объект выражения #locale со строкой

Я хочу установить атрибут th: class в зависимости от локали контекста, используя объект выражения #locale.

я пытался

th:class="${#locale}=='en'?'active':''"
th:class="${#locale=='en'}?'active':''"

Оба они приводят к ложному результату, но когда я печатаю его с помощью th:text="${#locale}, я получаю правильный код локали (en, es).

Любая идея о том, как сравнить объект #locale с кодом локали?


person Armando Pérez    schedule 27.05.2015    source источник


Ответы (3)


На основе ответа, опубликованного David_Garcia, я могу решить свою проблему следующим образом:

th:class="__${#locale}__=='en'?'active':''
person Armando Pérez    schedule 28.05.2015

Это проблема, о которой я рассказал парням из тимелеафа некоторое время назад.

Вам нужно сначала разрешить #locale, прежде чем сравнивать его с «en». Вы можете сделать это, добавив 2 символа подчеркивания в начале и в конце выражения, которое вы хотите разрешить первым. В вашем случае будет примерно так:

th:call="$({__#locale__}=='en'?'active':'')"
person David_Garcia    schedule 28.05.2015
comment
Вы были правы в том, что сначала решили выражение, но указанный вами способ не сработал для меня. Вместо этого я использовал это: th:class="__${#locale}__=='en'?'active':'' и это сработало! Спасибо! - person Armando Pérez; 28.05.2015

я использовал вот так

th:text="${#locale.toString()}=='in'?'active':'inactive'"
person asifaftab87    schedule 02.04.2018