Начальная загрузка вкладок с Thymeleaf

#java #spring-boot #bootstrap-4 #thymeleaf #spring-webflux

Вопрос:

Я получаю от контроллера:

 public Mono<String> getShops(){

.....
  model.addAttribute("shops", shops);
  
return Mono.just("shoppage");

}
 

в моем shoppage.html У меня есть вкладка с таблицей:

   <ul class="nav nav-tabs">
   <li class="nav-item">
    <a class="nav-link active" data-bs-toggle="tab" data-bs-target="#active-tab"
                       aria-current="page">ACTIVE</a>
                </li>
   <li class="nav-item">
     <a class="nav-link" data-bs-toggle="tab" data-bs-target="#unactive-tab"
                       aria-current="page">NON_ACTIVE</a>
                </li>
            </ul>

    <div class="tab-content" id="nav-tabContent">
      <div class="tab-pane fade active show" id="active-tab">
       <div>
         <table class="table table-hover">
           <thead>
           <tr>
           <th scope="col">Id</th>
           </tr>
            </thead>
            <tbody>
            <tr th:each="shop : ${shops}" th:if="${shop.status} == 'ACTIVE'">
           <th class="clickable-row" th:id="${shop.id}" th:text="${shop.id}" scope="row">d</th>
           </tr>
            </tbody>
            </table>
            </div>
           </div>

                <div class="tab-pane fade" id="unactive-tab">
           <div>
         <table class="table table-hover">
           <thead>
           <tr>
           <th scope="col">Id</th>
           </tr>
            </thead>
            <tbody>
            <tr th:each="shop : ${shops}" th:if="${shop.status} == 'NON_ACTIVE'">
           <th class="clickable-row" th:id="${shop.id}" th:text="${shop.id}" scope="row">d</th>
           </tr>
            </tbody>
            </table>
            </div>
 

Мне нужны элементы, когда статус магазина (shop.status == АКТИВНЫЙ) активен, отражен на первой вкладке, когда неактивен (shop.status == НЕАКТИВЕН), затем на второй. Но таблица на второй вкладке всегда пуста, независимо от данных.

—————————— решено

проблема заключалась в том, что я использовал

 IReactiveDataDriverContextVariable shops = new ReactiveDataDriverContextVariable(shopService. getShopByUserId(userPrincipal.getId()), 1, 1); 
 

в моем контроллере.

Ответ №1:

попробуйте это, но я думаю, что проблема в данных, полученных от контроллера, вы можете проверить, правильно ли получен НЕАКТИВНЫЙ

     <table class="table table-hover">
    <thead>
        <tr>
            <th scope="col">Id</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each="shop : ${shops}" th:if="${#strings.equals(shop.status, 'ACTIVE')}">
            <td class="clickable-row" th:id="${shop.id}" th:text="${shop.id}" scope="row">d</td>
        </tr>
    </tbody>
</table>

<table class="table table-hover">
    <thead>
        <tr>
            <th scope="col">Id</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each="shop : ${shops}" th:if="${#strings.equals(shop.status, 
    'NON_ACTIVE')}">
            <td class="clickable-row" th:id="${shop.id}" th:text="${shop.id}" 
    scope="row">d</td>
        </tr>
    </tbody>
</table>
 

Комментарии:

1. тнх. Но проблема заключалась в том, что я использовал магазины IReactiveDataDriverContextVariable = новые магазины ReactiveDataDriverContextVariable(shopService. getShopByUserId(UserPrincipal.getId()), 1, 1); в моем контроллере.