Thymeleaf membandingkan objek ekspresi #locale dengan string

Saya ingin menetapkan atribut th:class tergantung pada konteks lokal menggunakan objek ekspresi #locale.

saya telah mencoba

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

Keduanya menghasilkan false, tetapi ketika saya mencetaknya dengan th:text="${#locale}, saya mendapatkan kode lokal yang benar (en,es).

Adakah ide tentang cara membandingkan objek #locale dengan kode lokal?


person Armando Pérez    schedule 27.05.2015    source sumber


Jawaban (3)


Berdasarkan jawaban yang diposting oleh David_Garcia, saya dapat menyelesaikan masalah saya dengan cara ini:

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

Ini adalah masalah yang saya ceritakan kepada orang-orang thymeleaf beberapa waktu lalu.

Anda harus menyelesaikan terlebih dahulu #locale sebelum membandingkannya dengan "en". Anda dapat melakukannya dengan menambahkan 2 garis bawah di awal dan akhir ekspresi yang ingin Anda selesaikan terlebih dahulu. Dalam kasus Anda akan menjadi seperti ini:

th:call="$({__#locale__}=='en'?'active':'')"
person David_Garcia    schedule 28.05.2015
comment
Anda benar dalam menyelesaikan ekspresi terlebih dahulu, tetapi cara yang Anda tunjukkan tidak berhasil untuk saya. Saya menggunakan ini sebagai gantinya: th:class="__${#locale}__=='en'?'active':'' dan berhasil! Terima kasih! - person Armando Pérez; 28.05.2015

Saya menggunakan seperti ini

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