繁体   English   中英

如何在Thymeleaf中静态初始化Map?

[英]How to static initialize a Map in Thymeleaf?

我有以下thymeleaf导航栏html,并且想通过从静态Map重复使用th:each来创建链接来缩短它:

<div id="navbar" class="collapse navbar-collapse">
    <ul class="nav navbar-nav">
        <li th:classappend="${#httpServletRequest.getRequestURI() == '/home' ? 'active':''}">
            <a href="/home">Home</a></li>
        <li th:classappend="${#httpServletRequest.getRequestURI() == '/pax' ? 'active':''}">
            <a href="/pax">Person</a></li>
        <li th:classappend="${#httpServletRequest.getRequestURI() == '/about' ? 'active':''}">
            <a href="/about">About</a></li>
    </ul>
</div>

问题是:如何在html页面内初始化静态Map ,而不必绑定到后端控制器? 该映射的键值应表示“ URL路径”和“链接名称”之间的映射。

在Java代码中,这将是:

new HashMap<String, String>() {{
   put("/pax", "Person");
}};

但是,如何在没有后端代码的情况下以纯百里香html来实现呢?

如同:

<li th:each="entry : ${HOW TO HASHMAP}"
    th:classappend="${#httpServletRequest.getRequestURI() == '/'+entry.getKey()' ? 'active':''}">
  <a th:href="'/'+${link.getKey()}" th:text="$entry.getValue()"/>
</li>

Spring表达式内联映射 (方括号之间的空格- ${ { -很重要,否则表达式将使用百里香双括号语法来解释。)

<li th:each="entry: ${ {home:'Home', pax:'Person', about:'About'} }"
    th:classappend="${#httpServletRequest.getRequestURI() == '/' + entry.key ? 'active' : ''}">
  <a th:href="'/' + ${entry.key}" th:text="${entry.value}"/>
</li>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM