已弃用的未包装片段表达式

Udi*_*ngh 2 java spring spring-thymeleaf

您好,当使用 thymeleaf 3.1 和 spring6 单击注册按钮时,我收到以下错误,有人可以帮助我解决如何在新版本中编写给定语法的问题吗?

基础::布局(~{::节})

已弃用的未包装片段表达式“base::layout(~{::section})”在模板register.html第2行第53列中找到。请改用片段表达式的完整语法(“~{base::layout(~ {::部分})}”)。旧的、未包装的片段表达式语法将在 Thymeleaf 的未来版本中删除。

下面是我的 register.html 文件

<!DOCTYPE html>
<html  lang="en" xmlns:th="http://www.thymeleaf.org" 
       th:replace="base::layout(~{::section})">
<head>
    <meta charset="ISO-8859-1">
    <title>Insert title</title>
</head>
<body>
    <section>
        <div class="container p-3" >
            <div class="row">
                <div class="col-md-6 offset-md-3">
                    <div class="card">
                        <div class="card-header text-center fs-4">Register Page</div>
                        <th:block th:if="${session.msg}">
                            <p class="text-center fs-3">[[${session.msg}]]</p>
                            <th:block th:text="${#session.removeAttribute('msg')}" </th:block>
                            </th:block>
                        <div class="card-body">
                            <form action="createUser" method="post">
                                <div class="mb-3">
                                    <label>Enter First Name</lable>
                                        <input type="text" name="firstname" class="form-control">
                                </div>
                                <div class="mb-3">
                                    <label>Enter Middle Name</lable>
                                        <input type="text" name="middlename" class="form-control">
                                </div>
                                <div class="mb-3">
                                    <label>Enter Last</lable>
                                        <input type="text" name="lastname" class="form-control">
                                </div>
                                <div class="mb-3">
                                    <label>Enter Username</lable>
                                        <input type="text" name="username" class="form-control">
                                </div>
                                <div class="mb-3">
                                    <label>Enter Password</lable>
                                        <input type="text" name="password" class="form-control">
                                </div>
                                <div class="mb-3">
                                    <label>Enter Address</lable>
                                        <input type="text" name="address" class="form-control">
                                </div>
                                <button class="btn btn-primary col-md-12">Register</button>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我试图访问的 base.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" th:fragment="layout(content)">
<head>
<meta charset="ISO-8859-1">
<title>Insert title</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</head>
<body class="bg-light">
<h1>Base Page</h1>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">User Management</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav me-auto mb-2 mb-lg-0">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="/">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="/register">Register</a>
        </li>
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="/login">Login</a>
        </li>
      </ul>
    </div>
  </div>
</nav>
<div th:insert="${content}"></div>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

尝试注册用户并获得响应在前端注册成功

小智 5

只需替换您的代码:

th:replace="base::layout(~{::section})"

和 :

th:replace="~{base::layout(~{::section})}"

现在就可以了。