使用Thymeleaf作为模板引擎,是否可以使用div
子句向/从具有th:if
子句的简单<a href="lorem-ipsum.html" th:if="${condition}">Lorem Ipsum</a>
动态添加/删除CSS类?
通常,我可以使用条件子句如下:
{{1}}
我们将创建一个指向 lorem ipsum 页面的链接,但仅限于条件子句为真。
我正在寻找不同的东西:我希望这个块始终可见,但根据情况可以改变类。
答案 0 :(得分:192)
还有th:classappend
。
<a href="" class="baseclass" th:classappend="${isAdmin} ? adminclass : userclass"></a>
如果isAdmin
为true
,则会产生:
<a href="" class="baseclass adminclass"></a>
答案 1 :(得分:31)
是的,可以根据情况动态更改CSS类,但不能使用th:if
。这是通过elvis operator完成的。
<a href="lorem-ipsum.html" th:class="${isAdmin}? adminclass : userclass">Lorem Ipsum</a>
答案 2 :(得分:5)
为此目的,如果我没有布尔变量,我使用以下内容:
<li th:class="${#strings.contains(content.language,'CZ')} ? active : ''">
答案 3 :(得分:5)
另一个非常相似的答案是使用“等于”而不是“包含”。
"GET /code/romeo.txt HTTP/1.0\r\nHost: http://www.py4inf.com\r\n\r\n"
答案 4 :(得分:3)
如果您只是想在发生错误时附加一个类,可以使用the doc中提到的th:errorclass="my-error-class"
。
<input type="text" th:field="*{datePlanted}" class="small" th:errorclass="fieldError" />
应用于表单字段标记(input,select,textarea ...),它将从同一标记中的任何现有名称或th:字段属性读取要检查的字段的名称,然后追加指定的CSS类如果此类字段有任何相关错误,则为标记
答案 5 :(得分:2)
另一种用法:类,与@NewbLeech和@Charles相同,但如果没有“其他”情况,则简化为最大值:
<input th:class="${#fields.hasErrors('password')} ? formFieldHasError" />
如果#fields.hasErrors('password')为false,则不包括class属性。
答案 6 :(得分:1)
只是添加我自己的意见,以防它可能对某人有用。 这就是我用过的。
<div th:class="${request.read ? 'mdl-color-text--grey-800 w500' : ''}"> </div>
答案 7 :(得分:1)
@Nilsi提到的完全正确。但是,adminclass和user class需要用单引号引起来,因为Thymeleaf寻找adminClass或userclass变量应该是字符串,这可能会失败。就是这样,
应为:-
<a href="" class="baseclass" th:classappend="${isAdmin} ? 'adminclass' :
'userclass'">
</a>
或者只是:
<a href="" th:class="${isAdmin} ? 'newclass' :
'baseclass'">
</a>
答案 8 :(得分:0)
如果您要在URL中是否包含某些参数的情况下相应地添加或删除类。这是您可以做的
<a th:href="@{/admin/home}" th:class="${#httpServletRequest.requestURI.contains('home')} ? 'nav-link active' : 'nav-link'" >
如果该网址包含“ home”,则将添加活动类,反之亦然。
答案 9 :(得分:0)
即使有人使用Bootstrap,我也可以添加多个类:
<a href="" class="baseclass" th:classappend="${isAdmin} ?: 'text-danger font-italic' "></a>