在我的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>
显然我写得不正确,我可以理解为什么,假设${}
只是在评估里面的表达式,所以我的问题是:什么是写这个只调用方法的正确方法按钮单击而不是每次页面刷新时评估表达式?
答案 0 :(得分:0)
好,这个问题已经存在两年了,我敢肯定这不是最好的解决方案,但是如果其他人再过两年就来到这里,这里有一个提示(如何解决) :
在我看来,other_features
会评估页面上的每个表达式,无论它在哪里找到,即使在onclick中也是如此。您可以通过使按钮与${}
链接并在执行该功能(在本例中为th:href="@{/path/identifier}"
的控制器类中创建响应方法,并将您重定向到当前视图)来规避该问题。当然,当您单击按钮时,这会强制刷新页面,但可以使其按预期方式工作。