Как передать дополнительный параметр из html в контроллер - PullRequest
0 голосов
/ 19 апреля 2020

Spring Boot 2.5, Thymeleaf

Мне нужно при нажатии отправить, чтобы передать объект Продукт и дополнительный дополнительный параметр (количество)

html шаблон:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title th:text="${appName}">Category template title</title>
    <link th:href="@{/public/style.css}" rel="stylesheet"/>
    <meta charset="UTF-8"/>
</head>
<body>
<div class="container">
    <h3 th:text="*{title}"/>
    <form method="post" action="#" th:object="${product}" th:action="@{/product}">
        <input type="hidden" id="id" th:field="*{id}"/>
        <input type="text" placeholder="Name" id="name" th:field="*{name}" th:disabled="${isView}"/>
        <input type="hidden" id="created" th:field="*{created}"/>
        <textarea placeholder="Description" rows="5" id="description"
                  th:field="*{description}" th:disabled="${isView}"></textarea>
        <input type="number" placeholder="Price" id="price" th:field="*{price}" th:disabled="${isView}"/>
        <input type="text" placeholder="Currency" id="currency" th:field="*{currency}" th:disabled="${isView}"/>
        <input type="text" placeholder="Images URL(separate by comma)" id="images" th:field="*{images}" th:disabled="${isView}"/>
        <input th:type="${isView} ? hidden : submit" value="Submit"/>
    </form>
</div>
</body>
</html>

и вот мой контроллер:

 @RequestMapping("cart/add")
    public String addProduct(Model model) {
        logger.info("addProduct");
        model.addAttribute("isAdd", true);
        model.addAttribute("product", new Product());
        model.addAttribute("title", "Add Product");
        model.addAttribute("viewMode", ViewMode.ADD);
        return "product";
    }

    @PostMapping(value = "/product")
    public String submitProduct(Product product, Model model) {
        logger.info("submitProduct = " + product);
        if (product.getId() == 0) { // add category
            product.setCreated(new Date());
        } else { // update category
            product.setUpdated(new Date());
        }
        return "redirect:/cart";
    }

Так что при нажатии кнопки Отправить вызов submitProduct с объектом заполнения Product. Но мне нужно передать дополнительный параметр (как второй параметр в методе submitProduct) - количество. Как я могу передать этот дополнительный параметр int из html в контроллер?

1 Ответ

1 голос
/ 19 апреля 2020

Один из вариантов - получить доступ к значению напрямую из параметров запроса.

При условии, что значение количества доступно в форме в качестве поля ввода с именем quantity (похоже, оно не там в данный момент), тогда вы можете изменить свой контроллер, чтобы использовать это:

import org.springframework.web.bind.annotation.RequestParam;

И затем измените сигнатуру соответствующего метода на что-то вроде этого:

public String submitProduct(Product product, Model model,
        @RequestParam(name = "quantity") String quantity) {...}

(Полагаю, что в некотором роде также потребуется проверка поля).

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