OR koşullu Thymeleaf çoklu üçlü operatör
Aug 20 2020
Thymeleaf ile bunu kullanıyorum (iyi çalışıyor):
<li class="drop-down" th:classappend="${#httpServletRequest.getRequestURI() == '/url1' ? 'active':''}"><a href="#">MainMenu</a>
<ul>
<li><a href="/url1" th:href="@{/url1}"><i
class="fas fa-users"></i> url1</a></li>
<li><a href="/url2" th:href="@{/url2}"><i
class="fas fa-users"></i> url2</a></li>
<li><a href="/url3" th:href="@{/url3}"><i
class="far fa-file-alt mr-1"></i> url3</a></li>
<li><a href="/url4" th:href="@{/url4}"><i
class="fas fa-sign-out-alt mr-1"></i>url4</a></li>
</ul></li>
Şimdi 1/2/3/4 URL'lerinden herhangi birine tıklanırsa aktif sınıfı ana menüye ayarlamak istiyorum. Bu yüzden bunu denedim (Ve işe yaramadı):
<li class="drop-down" th:classappend="${#httpServletRequest.getRequestURI() == '/url1' ? 'active':'' :: '/url2' ? 'active':'' :: '/url3' ? 'active':'' :: '/url4' ? 'active':'' }"
Ayrıca "veya" ve "||" ile birçok başka kombinasyon denedim, hiçbir şey işe yaramadı. Tüm bu URL'ler (bağlam yolları) tamamen farklıdır ve like - contains'ı KULLANAMAZIM. Eminim fikri kaçırıyorum, ancak burada biraz yardıma ihtiyacım var. Lütfen önerin.
Yanıtlar
1 JakubCh. Aug 20 2020 at 18:33
Görünüşe göre active, istek URI'si bir dizi sabit değerden herhangi biriyle eşleştiğinde sınıfı eklemek istiyorsunuz . Böylece <li>elementinizi şöyle yazabilirsiniz :
<li
class="drop-down"
th:with="urls=${new String[]{'/url1','/url2','/url3','/url4'}}" th:classappend="${#arrays.contains(urls, #httpServletRequest.getRequestURI()) ? 'active' : ''}">
...nerede:
th:withurlsbir sınıfın eklenmesini tetikleyen url'leri içeren adlı bir dizi bildirir .th:classappendurlsdizinin tarafından döndürülen bir değeri içerip içermediğini kontrol eder#httpServletRequest.getRequestURI()ve koşullu olarak bir sınıf ekler.
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı