如何改变百里香叶变量的值?

时间:2016-01-15 03:47:11

标签: html thymeleaf

我是百里香的新手。我现在有点困惑。请查看以下代码

  <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的值。我该怎么做。提前谢谢。

3 个答案:

答案 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:withDocs)将其分配给变量:

<th:block th:with="someVariable=${demo.^[status==0]}">
    <th:block th:if="${someVariable}">Its true</th:block>
</th:block>