Как я могу создать динамическую таблицу в Thymeleaf ..? - PullRequest
0 голосов
/ 13 июня 2019

Я новичок в Thymeleaf и пытаюсь создать динамическую таблицу на шаблоне Themeleaf.

Как мне это сделать .. ??

Я гуглил, но не получиллюбой правильный ответ.Проблема в том, что я не могу перебрать List

>.У меня может быть любое количество столбцов, а имя столбца может быть любым.

<tr class="headings">
 <th class="column-title">ID</th>
 <th class="column-title">Name</th>
 <th class="column-title">Salary</th>
 <th class="column-title">Status</th>  
 </tr>
</thead>
<tbody>
 <tr class="even pointer" th:each="row:${rows}" id = "tablerow">
 <td class=" " th:text="${row.getId()}">Id</td>
 <td class=" " th:text="${row.getName()}">Name</td>
 <td class=" " th:utext="${row.getSalary()}">Salary</td>
 <td class=" " th:text="${row.getStatus()}">Active</td>
 </tr>
</tbody>

Мне нужно установить значения динамически, поскольку, если запрос результата будет продолжать меняться.прямо сейчас имя столбца жестко запрограммировано, и значение также получает значение row.getId , что если нет идентификатора, это может быть что-то в строках, что я буду использовать, чем ..?пример строки. <>.строки получаются как List

>.

Заранее спасибо.

1 Ответ

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

Вы можете выполнять итерацию по Map так же легко, как по List.Простейшей формой этого будет:

<tbody>
    <tr class="even pointer" th:each="row: ${rows}" id="tablerow">
        <td th:each="field: ${row}" th:text="${field.value}" />
    </tr>
</tbody>

Однако, поскольку Maps не имеет определенного порядка (если вы не используете что-то вроде TreeMap), способ, которым я бы это сделалбыло бы что-то вроде этого (полный пример должен соответствовать таблице вашего примера):

Контроллер

List<String> headers = Arrays.asList("ID", "Name", "Salary", "Status");
List<Map<String, Object>> rows = new ArrayList<>();
rows.add(Map.of("ID", "1", "Name", "Jim", "Salary", "50000", "Status", "active"));
rows.add(Map.of("ID", "2", "Name", "Sally", "Salary", "50000", "Status", "inactive"));

Шаблон

<table>
    <thead>
        <tr class="headings">
            <th th:each="header: ${headers}" class="column-title" th:text="${header}" />
        </tr>
    </thead>

    <tbody>
        <tr class="even pointer" th:each="row: ${rows}" id="tablerow">
            <td th:each="header: ${headers}" th:text="${row.get(header)}" />
        </tr>
    </tbody>
</table>

, который будет производить:

<table>
    <thead>
        <tr class="headings">
            <th class="column-title" >ID</th>
            <th class="column-title" >Name</th>
            <th class="column-title" >Salary</th>
            <th class="column-title" >Status</th>
        </tr>
    </thead>

    <tbody>
        <tr class="even pointer" id="tablerow">
            <td >1</td>
            <td >Jim</td>
            <td >50000</td>
            <td >active</td>
        </tr>
        <tr class="even pointer" id="tablerow">
            <td >2</td>
            <td >Sally</td>
            <td >50000</td>
            <td >inactive</td>
        </tr>
    </tbody>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...