Поля объектов @ModelAttribute не являются обязательными и являются нулевыми в контроллере - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть список объектов "BuyStocks" с именем "buyRequests", которые я перебираю, используя th: каждый и ссылаюсь на них с именем "Stock".

У меня также есть один объект "SellStocks"Названия "проданные товары". Каждое свойство объекта «buyRequests» заполняется в полях «soldStocks» и отображается в представлении с собственной кнопкой «Sell».

Когда я нажимаю кнопку «Sell», я хочу, чтобы заполненные полясохраняются в объекте soldStocks и выбираются с помощью параметра @ModelAttribute SellStock soldStocks в функции контроллера «Post».

Проблема заключается в том, что в контроллере свойства объекта soldStocks равны нулю.

Screenshot of View (поля будут скрыты после того, как я найду решение)

Контроллер:

@RequestMapping(value="/{userEmail}/sell/{stockName}", method=RequestMethod.POST)
public String postSell(@PathVariable String userEmail ,@PathVariable String stockName,@ModelAttribute SellStocks soldStocks, ModelMap model)

Просмотр:

<div class="card-columns">
    <div class="card border-dark mb-3" th:each="Stock : ${buyRequests}">
        <div th:if="${!Stock.id.userEmail.equals(userEmail)}">
            <div class="card-header" th:text="${'Stock Name: ' + Stock.id.stockName}"></div>
            <div class="card-body text-dark">
                <h6 class="card-subtitle mb-2 text-muted" th:text="${'Buyer: '+ Stock.id.userEmail}"></h6>
                <h6 class="card-soubtitle mb-2 text-muted" th:text="${'Buying Price: ' + Stock.price}"></h6>
                <p class="card-text" th:text="${'Required Quantity: ' + Stock.quantity}"></p>

                <form class="text-center border border-light p-3 form-row"
                   th:object="${soldStocks}" th:action="${'/'+{userEmail}+'/sell/'+{Stock.id.stockName}}" method="post">

                    <input th:id="${soldStocks.price}" name="${soldStocks.price}" th:value="${Stock.price}" />
                    <input th:id="${soldStocks.quantity}" name="${soldStocks.quantity}" th:value="${Stock.quantity}" />
                    <input th:id="${soldStocks.id.userEmail}" name="${soldStocks.id.userEmail}" th:value="${Stock.id.userEmail}" />
                    <input th:id="${soldStocks.id.stockName}" name="${soldStocks.id.stockName}"  th:value="${Stock.id.stockName}" />

                    <button type="submit" class="btn btn-sm btn-outline-secondary my-1">Sell</button>
                </form>
            </div>
        </div>
    </div>
</div>

поля, с которыми я борюсь:

<input  th:id="${soldStocks.price}" name="${soldStocks.price}"  th:value="${Stock.price}"/>
<input  th:id="${soldStocks.quantity}" name="${soldStocks.quantity}" th:value="${Stock.quantity}"/>
<input  th:id="${soldStocks.id.userEmail}" name="${soldStocks.id.userEmail}" th:value="${Stock.id.userEmail}"/>
<input  th:id="${soldStocks.id.stockName}" name="${soldStocks.id.stockName}" th:value="${Stock.id.stockName}"/>

1 Ответ

0 голосов
/ 06 ноября 2019

Добавьте th: object = "$ {soldStocks}" в теге формы

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