如何在Thymeleaf条件代码块中删除标签跨度,空格和换行符?

时间:2019-06-08 13:07:16

标签: spring spring-boot thymeleaf

我正在使用Spring Boot 2.1.5.RELEASE,Thymeleaf 3.0.11.RELEASE(thymeleaf-3.0.11.RELEASE.jar),Thymeleaf Spring 3.0.11.RELEASE(thymeleaf-spring5-3.0.11.RELEASE)。罐子)

代码段

<tr th:each="employee : ${employeeList}">
    <td th:text="${employee.order}"></td>
    <td th:text="${employee.age}"></td>
    <td th:switch="${employee.level}">
        <span th:case="0">Junior</span>
        <span th:case="1">Senior</span>
        <span th:case="2">Expert</span>
    </td>
    <td th:text="${employee.activeStatus}"></td>
</tr>

要通过JavaScript在数据网格中进行排序,我需要删除<span></span>标签对。例如,如果某位员工的级别为2。这次,Thymeleaf将渲染

<td><span>Expert<span></td>

我希望成为

<td>Expert</td>

(没有<span>标签)。如何做到这一点?

我也尝试

<tr th:each="employee : ${employeeList}">
    <td th:text="${employee.order}"></td>
    <td th:text="${employee.age}"></td>
    <td th:switch="${employee.level}">
        <th:block th:case="'0'">Junior</th:block>
        <th:block th:case="'1'">Senior</th:block>
        <th:block th:case="'2'">Expert</th:block>
    </td>
    <td th:text="${employee.activeStatus}"></td>
</tr>

但是它会生成不需要的字符

<td>


Expert
</td>

(在文本前有新行或空格,这是不需要的结果)

2 个答案:

答案 0 :(得分:1)

答案是,您不必关心多余的空格和换行符。 HTML在渲染时会忽略这些空格,因此它对您来说无关紧要-除了格式化hack之外,没有办法摆脱它们。

如果您真的想摆脱空间,可以:

  1. 将开关放在一行上。

    <tr th:each="employee : ${employeeList}">
        <td th:text="${employee.order}"></td>
        <td th:text="${employee.age}"></td>
        <td th:switch="${employee.level}"><th:block th:case="'0'">Junior</th:block><th:block th:case="'1'">Senior</th:block><th:block th:case="'2'">Expert</th:block></td>
        <td th:text="${employee.activeStatus}"></td>
    </tr>
    
  2. 创建一个Map<String, String> levelToDescription,将其放在模型上,然后使用它代替switch语句。

    <tr th:each="employee : ${employeeList}">
        <td th:text="${employee.order}" />
        <td th:text="${employee.age}" />
        <td th:text="${levelToDescription[employee.level]}" />
        <td th:text="${employee.activeStatus}" />
    </tr>
    

等等...

答案 1 :(得分:0)

替换

<td th:switch="${employee.level}">
    <th:block th:case="'0'">Junior</th:block>
    <th:block th:case="'1'">Senior</th:block>
    <th:block th:case="'2'">Expert</th:block>
</td>

作者

<th:block th:if="${employee.level} eq '0'"><td>Junior</td></th:block>
<th:block th:if="${employee.level} eq '1'"><td>Senior</td></th:block>
<th:block th:if="${employee.level} eq '2'"><td>Expert</td></th:block>