【问题标题】:Thymeleaf: th:each with exclusion of any particular valueThymeleaf: th:each 排除任何特定值
【发布时间】:2020-03-20 15:52:15
【问题描述】:

我想知道是否有可能做一个 th:each 排除

我的意思是...例如...我们的数据库和模型中有三个状态 {FREE,RESERVED,TAKEN} (Enum)。

我想做一个 th:each 这些状态,除了一个(在数据库中为特定对象选择的那个,我不想选择已经采用的选项)

有没有类似于我刚刚为这个例子发明th:except 的东西?

<select>
<option th:each="i: ${state}" th:except="${i.RESERVED}" th:text="${i}" th:value="${i}" ></option>
</select>

所以我可以在这种情况下使用它:

<tr th:each="spot : ${spots}">
  <td th:text="${spot.name}" th:value="${spot.id}"></td>
  <td>
    <select>
      <option th:each="i: ${state}" th:except="${spot.i}" th:text="${i}" th:value="${i}" ></option>
    </select>
  </td>
<tr>

我知道我可能可以在控制器中执行此操作,但我想知道是否有任何“th:thing”可以用来超级快速和轻松地执行此操作!

甚至是一个“th:where”,我可以将它放在与 th:each 相同的标签中......

【问题讨论】:

    标签: foreach thymeleaf each


    【解决方案1】:

    您可以为此目的使用“th:unless”。鉴于你的例子:

    <tr th:each="spot : ${spots}">
      <td th:text="${spot.name}" th:value="${spot.id}"></td>
      <td>
        <select>
          <option th:each="i: ${state}" th:unless="${spot == i}" th:text="${i}" th:value="${i}" ></option>
        </select>
      </td>
    <tr>
    

    从您的示例${spot.i} 中不清楚该变量是什么,所以我假设您想将spot 的值与i 进行比较。

    【讨论】:

      【解决方案2】:

      Ops,我一周前解决了它,但我忘了评论我是如何做到的。

      这比我想象的要容易得多,我无法解释如何,但 Spring 会自动完成很多事情。

      这是我的控制器:

      @GetMapping("/bajaAnimal")
      public String pagBaja(Model model) {
      
          List<Spot> spotsList = repository.findAllSpotsByState(Status.RESERVED) //IF YOU FIND BY ONE STATUS, IT WILL EXCLUDE IT FROM OPTIONS!
          model.addAttribute("spots", spotsList);
      
          Status[] statusOptions = Status.values();
          model.addAttribute("statuses", statusOptions );
      
      return "animales/bajaAnimal";
      }
      

      我的 HTML:

      <th:block th:each="spot: ${spots}">
          <select class="form-control" th:name="selectEstado" th:id="selectEstado" required>
              <option value="" selected="selected">Change status</option>
              <th:block th:each="i : ${statuses}">
                  <th:block th:if="${i != spot.status}">
                      <option th:value="${i}" th:text="${i}"></option>
                  </th:block>
              </th:block>
          </select>
      </th:block>
      

      【讨论】:

        猜你喜欢
        • 2015-09-04
        • 2018-01-07
        • 2018-05-09
        • 2018-05-11
        • 2023-03-31
        • 2015-06-17
        • 2020-10-09
        • 2016-07-16
        • 1970-01-01
        相关资源
        最近更新 更多