我是百里香的新手。我现在有点困惑。请查看以下代码
<th:block th:with="${someVarible=false}">
<th:block th:each="dem : ${demo}">
<th:block th:if="${dem.status==0}">
//Here I need to change the value of someVarible to true
</th:block>
</th:block>
<th:block th:if="${someVariable}">Its true</th:block>
</th:block>
我需要编辑someVarible的值。我该怎么做。提前谢谢。
答案 0 :(得分:0)
你有表格吗?如何将数据发送到服务器?
如果您的boolean类型的变量可以添加,例如,用于编辑的复选框:
<th:block th:with="${someVarible=false}">
<th:block th:each="dem : ${demo}">
<th:block th:if="${dem.status==0}">
<label for="someVariableCheck">Edit someVariable</label>
<input id="someVariableCheck" type="checkbox" th:value="${someVariable}"/>
</th:block>
</th:block>
<th:block th:if="${someVariable}">Its true</th:block>
答案 1 :(得分:0)
您无法像Thymeleaf所描述的那样实现所需的功能。
:只做局部变量定义,只能在该片段内进行评估。
<div class="example1" th:with="foo=${bar}">
<!--/* foo is availabile here */-->
<th:block th:text="${foo}" />
</div>
<div class="example2">
<!--/* foo is NOT availabile here! */-->
</div>
你无法在模板中更改该变量。 Thymeleaf只是表示层,您正在尝试实现必须在应用程序层(Java代码)上完成的任务。
在应用程序层(Java代码)上,你可以这样做:
Map<Integer, Boolean> fooMap = new HashMap<Integer, Boolean>();
for(Demo demo : demos) {
if(demo.getStatus() == 0) {
fooMap.put(demo.getId(), true);
} else {
fooMap.put(demo.getId(), false);
}
}
然后在表示层(Thymeleaf):
<th:block th:each="demo : ${demos}">
<th:block th:text="${demo.getId()}" />
</th:block>
<th:block th:each="demo : ${demos}">
<th:block th:if="${fooMap.get(demo.getId()) == true}">It's true</th:block>
</th:block>
如果您不想使用HashMap,可以使用继承并扩展对象Demo。
(请注意我编写的代码未经过测试,因此可能需要一些小的修复,但我希望我帮助过你。)
答案 2 :(得分:0)
正如Lukas所说,不可能更改 Thymeleaf中变量的值,因为这仅适用于该元素中的内容。但是,只有使用Thymeleaf才能实现非常相似的东西。
您可以使用Collection Selection和^[...]
语法选择列表中与条件status==0
匹配的第一个元素。这个表达式看起来像:
${demo.^[status==0]}
如果demo
列表包含status==0
的元素,那么将返回该元素。否则,它将导致null。这可以直接在th:if
:
<th:block th:if="${demo.^[status==0]}">Its true</th:block>
或者,如果您还需要将someVariable
用于其他内容,则可以使用th:with
(Docs)将其分配给变量:
<th:block th:with="someVariable=${demo.^[status==0]}">
<th:block th:if="${someVariable}">Its true</th:block>
</th:block>