【问题标题】:Thymeleaf/Spring Boot: "th:onclick" method being called on every refreshThymeleaf/Spring Boot:每次刷新都会调用“th:onclick”方法
【发布时间】:2018-02-16 20:45:46
【问题描述】:

在我的 Spring Boot 项目的表中,我为每个触发任务的 Task 类型的对象创建了一个按钮。由于我编写它的性质,每次刷新页面时似乎都会调用该方法:

<tr th:each="task : ${tasks}">
    <td th:text="${task.getId()}"></td>
    <td th:text="${task.getName()}"></td>
    <td th:text="${task.getSchedule()}"></td>
    <td th:text="${task.getRunTime()}"></td>
    <td><button type="button" th:onclick="${task.trigger()}">Trigger</button></td>
</tr>

显然我写错了,我可以理解为什么,假设${} 只是评估里面的表达式,所以我的问题是:什么是正确的写法来调用仅在按钮单击时的方法而不是每次页面刷新时都计算表达式?

【问题讨论】:

    标签: spring-boot thymeleaf


    【解决方案1】:

    好的,所以这个问题已经有两年了,我确信这不是最好的解决方案,但如果其他人在两年后​​登陆这里,这里有一个关于如何(某种)解决这个问题的提示:

    在我看来,${} 会评估页面上的每个表达式,无论它在哪里找到它,即使在点击时也是如此。您可以通过使按钮与th:href="@{/path/identifier}" 链接并在您的控制器类中创建一个响应方法来执行该函数(在本例中为task.trigger())并将您重定向到当前视图来规避这种情况。这当然会在您单击按钮时强制刷新页面,但它会使其按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-29
      • 2016-08-29
      • 1970-01-01
      • 2011-07-06
      • 2020-07-15
      • 2020-05-16
      • 1970-01-01
      • 2019-11-08
      相关资源
      最近更新 更多