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
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'