Spring 如果使用 Thymeleaf 出现错误,则引导打开模式

Spring Boot opening a modal if there are errors using Thymeleaf

我正在尝试验证模态,但现在无法使用 Thymeleaf 打开它。 我有一个 table,对于每一行我都有一个不同的模态,模态 ID 取其名称 myModal + 来自 table

的对象 ID
<div class="modal" th:id="*{'myModal'+{object.ID}}" tabindex="-1" role="dialog" aria-labelledby="#myModal" aria-hidden="true">

如果我在模态中更新的对象有错误(如果我收到参数错误),我想打开模态。我可以验证对象和所有内容,但我不知道如何使用 Thymeleaf 来获取我验证过的对象的 ID 只有当我对 ID 进行硬编码时,我才能在出现错误时打开模式 - 例如 ID 20

<script th:inline="javascript" th:if="${param.err}">$("#myModal20").modal("show");</script>

在控制器中,当我验证它是否有错误时,我可以发送一个模型属性“id-modal”,我想我可以用 Thymeleaf 把它放在硬编码的“20”的位置,但我不知道怎么做,有人可以帮忙吗?当我尝试执行此操作时,我不断在浏览器控制台中收到错误“未捕获错误:语法错误,无法识别的表达式:'myModal'+${id-modal}”

您不应在模型属性中使用破折号 -。表达式 ${id-modal} 表示从 id 中减去 modal 的值——字面意思是数学表达式 id - modal。一旦你改变了它(我将在这个例子中使用 modalId),你的 JavaScript 可能看起来像这样。 (另请参阅 documentation on JavaScript inlining。)

<script th:inline="javascript" th:if="${param.err}">
  let id = /*[[${modalId}]]*/ 0;
  $("#myModal" + id).modal("show");
</script>

(我可能还会用准备好的 jQuery 文档包围它,但您可能不会 want/need 那样。)