Как удалить тэг span, пробел, символ новой строки в блоке условного кода Thymeleaf? - PullRequest
0 голосов
/ 08 июня 2019

Я использую 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 ]

1 голос
/ 08 июня 2019

Ответ таков: вам не нужно беспокоиться о лишних пробелах и переводах строки. HTML игнорирует эти пробелы при рендеринге, и поэтому для вас это не должно иметь значения - и нет способа избавиться от них, за исключением попыток форматирования.

Если вы действительно хотите избавиться от пробелов, вы можете:

  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>
    

Etc ...

0 голосов
/ 08 июня 2019

Заменить

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...