百里香叶:th:每个都排除任何特定值



我想知道是否有可能做一个th:each with exclussions

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

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

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

<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:each 相同的标签中的"th:where"......

您可以使用"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进行比较。

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";
}

我的网页:

<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>

最新更新