Apa cara terbaik untuk melakukan yang sederhana if
- else
di Thymeleaf?
Saya ingin mencapai efek yang sama di Thymeleaf
<c:choose>
<c:when test="${potentially_complex_expression}">
<h2>Hello!</h2>
</c:when>
<c:otherwise>
<span class="xxx">Something else</span>
</c:otherwise>
</c:choose>
dalam JSTL.
Apa yang saya pikirkan sejauh ini:
<div th:with="condition=${potentially_complex_expression}" th:remove="tag">
<h2 th:if="${condition}">Hello!</h2>
<span th:unless="${condition}" class="xxx">Something else</span>
</div>
Saya tidak ingin mengevaluasi potentially_complex_expression
dua kali. Itu sebabnya saya memperkenalkan variabel lokal condition
. Tetap saya tidak suka menggunakan keduanya th:if="${condition}
dan th:unless="${condition}"
.
Yang penting adalah saya menggunakan dua tag HTML yang berbeda: katakanlah h2
dan span
.
Bisakah Anda menyarankan cara yang lebih baik untuk mencapainya?
Saya mencoba kode ini untuk mengetahui apakah pelanggan masuk atau anonim. Saya menggunakan
th:if
danth:unless
ekspresi kondisional. Cara yang cukup sederhana untuk melakukannya.sumber
Saya ingin membagikan contoh saya terkait keamanan selain Daniel Fernández.
Berikut adalah ekspresi kompleks dengan objek utilitas 'otentikasi' dan 'otorisasi' campuran yang menghasilkan hasil 'benar / salah' untuk kode templat thymeleaf.
Objek utilitas 'otentikasi' dan 'otorisasi' berasal dari perpustakaan thymeleaf extras springsecurity3 . Ketika objek 'otentikasi' tidak tersedia ATAU otorisasi.ekspresi ('isAuthenticated ()') mengevaluasi menjadi 'false', ekspresi mengembalikan $ {false}, jika tidak $ {true}.
sumber
Kamu bisa memakai
Contoh:
Ini bisa bermanfaat bagi orang baru yang mengajukan pertanyaan yang sama.
sumber
Solusi lain - Anda dapat menggunakan variabel lokal:
Lebih lanjut tentang variabel lokal:
http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#local-variables
sumber
th:each
mana ekspresi itu:
bukannya=
Dalam kasus yang lebih sederhana (ketika tag html sama):
sumber
Solusi lain hanya menggunakan
not
untuk mendapatkan negasi yang berlawanan:Seperti dijelaskan dalam dokumentasi , itu sama dengan menggunakan
th:unless
. Seperti jawaban lain telah jelaskan:Menggunakan
not
juga berfungsi, tetapi IMHO lebih mudah digunakanth:unless
daripada meniadakan kondisi dengannot
.sumber
sumber
masukkan deskripsi gambar di sini
sumber
Gunakan
th:switch
sebagaiif-else
Gunakan
th:switch
sebagaiswitch
sumber