Thymeleaf - chuyển các biến đến các phân đoạn
Sep 21 2020
Tôi có mẫu sau với phân đoạn mà tôi đang chuyển biến:
<div th:fragment="main">
<span>
<th:block th:include=" :: inner(${item})" /> </span> <a> <th:block th:include=" :: inner(${item})" />
</a>
</div>
<th:block th:fragment="inner(item)">
[[${item.name}]]
</th:block>
Nếu tôi cố gắng kết xuất nó, tôi gặp lỗi nói:
Property or field 'name' cannot be found on null
Nếu tôi kết xuất nó như thế này
<div th:fragment="main">
<span>
<th:block th:include=" :: inner(${item})" />
[[${item.name}]] </span> <a> <th:block th:include=" :: inner(${item})" />
</a>
</div>
Tôi đang làm gì sai khi gán biến cho phân mảnh?
Trả lời
michal.jakubeczy Sep 21 2020 at 21:47
Tìm ra.
Lý do của lỗi là phân mảnh 'bên trong' được hiển thị trong quá trình kết xuất cùng với phân mảnh chính. Vì vậy, cùng với bao gồm nếu được hiển thị bởi chính nó. Và kết xuất cuối cùng này đã làm hỏng nó.
Các giải pháp khả thi là:
- chuyển đoạn bên trong sang một tệp khác
- thêm
th:if="false"vào phân đoạn 'bên trong' để tránh tự hiển thị (bao gồm sẽ tiếp tục hoạt động).