【问题标题】:Thymeleaf multiple ternary operator with OR conditionThymeleaf 具有 OR 条件的多个三元运算符
【发布时间】:2020-08-20 03:52:50
【问题描述】:

我正在使用 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 中的任何一个,我想将活动类设置为主菜单。所以我尝试了这个(但它没有工作):

<li class="drop-down" th:classappend="${#httpServletRequest.getRequestURI() == '/url1' ? 'active':'' :: '/url2' ? 'active':'' :: '/url3' ? 'active':'' :: '/url4' ? 'active':'' }"

我还尝试了很多其他“或”和“||”的组合,但没有任何效果。所有这些 URL(上下文路径)都完全不同,我不能像 - contains 一样使用。我确定我错过了这个想法,但在这里需要一些帮助。请建议。

【问题讨论】:

    标签: spring-boot spring-mvc thymeleaf conditional-operator


    【解决方案1】:

    当请求 URI 与一组固定值中的任何一个匹配时,您似乎想附加 active 类。所以你可以像这样写你的&lt;li&gt;元素:

    <li
       class="drop-down"
       th:with="urls=${new String[]{'/url1','/url2','/url3','/url4'}}"
       th:classappend="${#arrays.contains(urls, #httpServletRequest.getRequestURI()) ? 'active' : ''}">
    

    ...哪里:

    • th:with 声明了一个名为 urls 的数组,其中包含触发附加类的 url。
    • th:classappend 检查urls 数组是否包含#httpServletRequest.getRequestURI() 返回的值,并有条件地附加一个类。

    【讨论】:

    • 谢谢雅库布。要么我做错了,要么你有错字。 Bcoz,th:with="urls="${ 在此工作时不起作用 - th:with="urls=${。这是您打错了额外的双引号还是我仍然做错了?
    • @AjayKumar 是的,我不小心打错了双引号。很好的收获:)
    猜你喜欢
    • 2020-05-18
    • 2016-11-02
    • 2020-01-19
    • 2012-09-14
    • 2013-06-06
    • 2011-06-26
    • 2013-01-14
    • 2015-08-29
    • 1970-01-01
    相关资源
    最近更新 更多