我有以下thymeleaf
导航栏html,并希望通过从静态th:each
重复使用Map
创建链接来缩短它:
<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
,而不必绑定到后端控制器?地图应该键值表示“网址路径”和“链接名称”之间的映射。
在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>
答案 0 :(得分:2)
Spring expression inline maps。 (括号之间的空格 - ${ {
- 很重要,否则表达式将使用百日咳双括号语法进行解释。)
<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>