“禁止实例化新对象和访问静态类或参数”错误:action

问题描述 投票:0回答:1

我正在开发一个 Spring Boot 应用程序,使用 Thymeleaf 作为视图层。在我的一个模板中,我需要创建一个用于更新书籍的表单。但是,我在渲染模板时遇到以下错误:

org.thymeleaf.exceptions.TemplateProcessingException: Instantiation of new objects and access to static classes or parameters is forbidden in this context (template: "book-change" - line 12, col 7)

这是我的 Thymeleaf 模板中的相关代码(

book-change.html
):

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en">
  <head>
    <title>Change book</title>
  </head>
  <body>
    <h1>Change book</h1>
    <a th:href="@{/admin}">Admin panel</a>
    <h2>Book</h2>

    <form method="post" th:object="${bookToChange}" th:action="@{'/admin/changeBook/' + ${param.id}}">
      <label>
        Title:
        <input type="text" th:field="*{title}" placeholder="Title"/>
      </label>
      <label>
        Author:
        <input type="text" th:field="*{author}" placeholder="Author"/>
      </label>
      <label>
        Year:
        <input type="number" th:field="*{year}" placeholder="Year"/>
      </label>
      <label>
        Keywords:
        <input type="text" th:field="*{keywords}" placeholder="Keywords"/>
      </label>
      <button type="submit">Change Book</button>
    </form>
  </body>
</html>

param.id
已正确传递,并且我已确认它包含预期值,因为它在模板中的其他位置正确呈现。

我尝试通过 Model 添加 id 并且它有效,但我认为这不是最好的方法,因为 Thymeleaf 可以从 URL 获取参数。

java spring thymeleaf
1个回答
0
投票

我已将

th:action
替换为:

th:action="@{/admin/changeBook/{id}(id=${param.id})}"
© www.soinside.com 2019 - 2024. All rights reserved.