Spring MVC - Ошибка привязки списка объектов к моей форме - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь изменить объект, у которого есть список объектов, сопоставленных с ним как отношение «один ко многим», но он продолжает сбой со следующей ошибкой.

[Ошибка обработки запроса;вложенное исключение - org.springframework.beans.InvalidPropertyException: недопустимое свойство 'storeClosureCashSet [0]' класса бина [application.model.StoreClosure]: получатель для свойства 'storeClosureCashSet' вызвал исключение;Вложенное исключение - java.lang.reflect.InvocationTargetException] с основной причиной

java.lang.NullPointerException: null

Я пробовал несколько других вариантов, но просто не будуРабота.Я не могу изменить список, мне нужно, чтобы он оставался как набор.

Когда я загружаю страницу, входы устанавливаются правильно, и все отображается так, как должно, но ошибка всегда возникает при отправкеформа.Вы можете проверить мой код ниже.

Итак, я получил следующую форму в Thymeleaf.

<form form id="closure-form" th:object="${closure}" th:action="@{/url}" method="post">
    <input hidden="hidden" th:field=*{id}/>
    <!-- Some other fields -->
    <div class="full-width align-center no-margins">
        <th:block th:each="item, cashStat : *{storeClosureCashSet}">
            <div class="half-width no-margins align-center">
                <input hidden="hidden" class="hidden" th:field="*{storeClosureCashSet[__${cashStat.index}__].storeClosureCashPK}"/>
                <input hidden="hidden" class="hidden" th:field="*{storeClosureCashSet[__${cashStat.index}__].storeClosureFK}"/>
                <input hidden="hidden" class="hidden" th:field="*{storeClosureCashSet[__${cashStat.index}__].exchangeRate}"/>
                <input hidden="hidden" class="hidden" th:field="*{storeClosureCashSet[__${cashStat.index}__].currency}"/>
                <input class="minimalist-input minimalist-number-input minimalist-number-format align-center currency-crc" th:field="*{storeClosureCashSet[__${cashStat.index}__].amount}"/>
            </div>
        </th:block>
    </div>
</form>

Вот код сущности.

public class StoreClosure {

    private Long id;
    // Some other fields.
    // Getters and setters of some other fields.

    private Set<StoreClosureCash> storeClosureCashSet;

    public Set<StoreClosureCash> getStoreClosureCashSet() {
        return new HashSet<StoreClosureCash>(this.storeClosureCashSet);
    }

}

Моя конфигурация Hibernate.

<hibernate-mapping>
    <class name="application.model.StoreClosure" table="STORE_CLOSURE" schema="dbo" catalog="DB">
        <id name="storeClosurePK">
            <column name="id" sql-type="bigint"/>
            <generator class="identity"/>
        </id>
        <!-- Some other fields -->
        <set name="storeClosureCashSet" inverse="true" lazy="true" fetch="join">
            <key>
                <column name="store_closure_fk" sql-type="long" not-null="true"/>
            </key>
            <one-to-many class="application.model.StoreClosureCash"/>
        </set>
</hibernate-mapping>

И это будет код моего контроллера.

@PostMapping(value = "/url")
public String updateStoreClosure(@ModelAttribute StoreClosure storeClosure) {
    // Some code.
    return "page";
}

Мне действительно нужно понять, что происходит.Ваша помощь очень ценится.

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