Я пытаюсь получить доступ к своему списку объектов тимелист и перебрать его.
Класс элемента, к которому я пытаюсь получить доступ, выглядит следующим образом:
data class Orders(val orders: List<Order>)
data class Order(val orderNumber: Long,
val time: String,
val name: String,
val zipCode: Int,
val recipientType: String?,
val recipientName: String?,
val recipientZipCode: String?,
val recipientCity: String?,
val shoppingNote: String?,
val id: Int,
val orderRows: List<OrderRow>)
data class OrderRow(val id: Int,
val variantTitle: String,
val productTitle: String,
val amount: Int,
val units: List<Unit>)
data class Unit(val code: String,
val redeemed: Boolean?)
И контроллер, который я использую для предоставления списка заказов моему шаблону, выглядит следующим образом:
@RequestMapping("/user")
fun welcome(model: Model, principal: Principal): String {
val user = userService.getUserInfo(principal.name)
val listOfOrders = supplierService.getOrders(email, apiKey).orders
model.addAttribute("user", user)
model.addAttribute("listOfOrders", listOfOrders)
return "user"
}
и мой шаблон, который я использую, выглядит следующим образом
<div class="container">
<table class="table" th:object="${listOfOrders}">
<thead>
<th>#</th>
<th>Navn</th>
<th>ID</th>
</thead>
<tbody>
<th:block th:each="order: ${listOfOrders}">
<tr class="accordion-toggle"
data-toggle="collapse"
th:data-target="'#accordion_'+${order.id}">
<td th:text="${order.orderNumber}"></td>
<td th:text="${order.name}"></td>
<td th:text="${order.id}"></td>
</tr>
<tr>
<td></td>
<td colspan="6">
<div th:id="'accordion_'+${order.id}" class="collapse in">
<table class="table">
<thead>
<th>#</th>
<th>Navn</th>
<th>ID</th>
</thead>
<tbody>
<th:block th:each="row: ${order.orderRows}">
<tr class="accordion-toggle"
data-toggle="collapse"
th:data-target="'#accordion_'+${row.id}">
<td th:text="${row.amount}"></td>
<td th:text="${row.productTitle}"></td>
<td th:text="${row.id}"></td>
</tr>
<tr>
<td></td>
<td colspan="6">
<div th:id="'accordion_'+${row.id}" class="collapse in">
Nothing to show yet.
</div>
</td>
</tr>
</th:block>
</tbody>
</table>
</div>
</td>
</tr>
</th:block>
</tbody>
</table>
</div>
и первый блок, в котором я использую listOfOrders, поскольку объект th: работает отлично, но для второй итерации, где я пытаюсьДоступ к orderRows Порядка завершается неудачно с помощью двух следующих сообщений
org.thymeleaf.exceptions.TemplateProcessingException: исключение, оценивающее выражение SpringEL: "order.orderRows" (template: "user" - строка 50, столбец col39)
org.springframework.expression.spel.SpelEvaluationException: EL1007E: Свойство или поле 'orderRows' не может быть найдено в null
В настоящее время я застрял с этим, потому что я тоженеобходимо выполнить итерацию по единицам orderRows, как только я смогу выполнить итерацию по OrderRows Orders.
И я убедился, что listOfOrders добавлен в модельдействительно есть и orderRows, и orderRows.units.
Есть ли какие-либо предложения о том, чего мне не хватает, или предложения, чтобы это сработало?