Как я могу получить доступ к списку th: objects и просмотреть его с помощью th: each? - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь получить доступ к своему списку объектов тимелист и перебрать его.

Класс элемента, к которому я пытаюсь получить доступ, выглядит следующим образом:

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.

Есть ли какие-либо предложения о том, чего мне не хватает, или предложения, чтобы это сработало?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...