具有 OR 条件的 Thymeleaf 多个三元运算符
Thymeleaf multiple ternary operator with OR condition
我正在使用 Thymeleaf(效果很好):
<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>
现在,如果单击任何 URL 1/2/3/4,我想将活动 class 设置为主菜单。所以我尝试了这个(但它没有用):
<li class="drop-down" th:classappend="${#httpServletRequest.getRequestURI() == '/url1' ? 'active':'' :: '/url2' ? 'active':'' :: '/url3' ? 'active':'' :: '/url4' ? 'active':'' }"
我还尝试了很多其他的“或”和“||”组合,但没有任何效果。所有这些 URLs(上下文路径)都是完全不同的,我不能使用 like - contains。我确定我错过了这个想法,但在这里需要一些帮助。欢迎推荐。
当请求 URI 与一组固定值中的任何一个匹配时,您似乎想附加 active
class。所以你可以这样写你的 <li>
元素:
<li
class="drop-down"
th:with="urls=${new String[]{'/url1','/url2','/url3','/url4'}}"
th:classappend="${#arrays.contains(urls, #httpServletRequest.getRequestURI()) ? 'active' : ''}">
...其中:
th:with
声明一个名为 urls
的数组,其中包含触发附加 class. 的 url
th:classappend
检查 urls
数组是否包含 #httpServletRequest.getRequestURI()
返回的值,并有条件地附加一个 class.
我正在使用 Thymeleaf(效果很好):
<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>
现在,如果单击任何 URL 1/2/3/4,我想将活动 class 设置为主菜单。所以我尝试了这个(但它没有用):
<li class="drop-down" th:classappend="${#httpServletRequest.getRequestURI() == '/url1' ? 'active':'' :: '/url2' ? 'active':'' :: '/url3' ? 'active':'' :: '/url4' ? 'active':'' }"
我还尝试了很多其他的“或”和“||”组合,但没有任何效果。所有这些 URLs(上下文路径)都是完全不同的,我不能使用 like - contains。我确定我错过了这个想法,但在这里需要一些帮助。欢迎推荐。
当请求 URI 与一组固定值中的任何一个匹配时,您似乎想附加 active
class。所以你可以这样写你的 <li>
元素:
<li
class="drop-down"
th:with="urls=${new String[]{'/url1','/url2','/url3','/url4'}}"
th:classappend="${#arrays.contains(urls, #httpServletRequest.getRequestURI()) ? 'active' : ''}">
...其中:
th:with
声明一个名为urls
的数组,其中包含触发附加 class. 的 url
th:classappend
检查urls
数组是否包含#httpServletRequest.getRequestURI()
返回的值,并有条件地附加一个 class.