#spring #spring-boot #thymeleaf
Вопрос:
Я использую spring boot 2.5 вместе с Thymeleaf 3.0.12. У меня есть список строк, которые я хочу отобразить в двух столбцах. Ниже приведен фрагмент кода, который я использую на данный момент:
<div class="row">
<div class="col-sm-6">
<div class="form-check" th:each="service : ${services}" th:if="${serviceStat.odd}">
<input type="checkbox" class="form-check-input" name="serviceChk" th:id="${'serviceChkBox_' serviceStat.count}"/>
<label class="form-check-label" th:text="${'myStr' '_' serviceStat.count}"></label>
</div>
</div>
<div class="col-sm-6">
<div class="form-check" th:each="service : ${services}" th:if="${serviceStat.even}">
<input type="checkbox" class="form-check-input" name="serviceChk" th:id="${'serviceChkBox_' serviceStat.count}"/>
<label class="form-check-label" th:text="${'myStr' '_' serviceStat.count}"></label>
</div>
</div>
</div>
Это работает, как и ожидалось.
Но для этого подхода требуется два раза повторять список. Я сомневаюсь, что мой список огромен, моя страница может замедлиться. Есть ли способ добиться того же самого за одну итерацию?
Комментарии:
1. Почему бы не использовать CSS для создания столбцов?
2. Откуда берется serviceStat?
3. @aksappy это агрегация переменной, «службы» и суффикса «Статистика», которая будет автоматически доступна в Thymeleaf
4. Является ли четная / нечетная статистика в сервисах с соотношением 1:1? Если это так,
col-sm-6
то автоматически сохранит их в двух столбцах, и потребуется только один цикл.5. @aksappy я тебя не понял ? Как?
Ответ №1:
Мы можем сделать это за один цикл. Хитрость заключается в том, чтобы выполнить th:each
с col-sm-6
div, и bootstrap позаботится о выравнивании их в двух столбцах. У операции, оказывается, есть th:each
внутренняя col-sm-6
часть div.
<div class="row">
<div class="col-sm-6" th:each="service : ${services}">
<div class="form-check">
<input type="checkbox" class="form-check-input" name="serviceChk" th:id="${'serviceChkBox_' serviceStat.count}"/>
<label class="form-check-label" th:text="${'myStr' '_' serviceStat.count}"></label>
</div>
</div>
</div>
ПРИМЕЧАНИЕ — col-sm-6
это точка останова для небольших экранов. Использовать https://getbootstrap.com/docs/4.1/layout/grid/#grid-options чтобы выбрать правильные точки останова для ваших требований.