Thymeleaf-为具有隐藏输入的表单中的对象设置属性

时间:2018-12-23 11:00:29

标签: spring-boot thymeleaf

我很喜欢html:

<form action="#" th:action="@{${cartServiceBaseUrl}+'/addCatalogItemToCart'}" th:object="${cartCatalogItem}"  method="post">
                <input type="hidden" th:value="${cartId}" th:field="*{cartId}" />
                <input type="hidden" th:value="${catalogItem.catalogItemId}" th:field="*{catalogItemId}" />
                <input type="submit" value="add to cart" />
            </form>

不幸的是,两个值都为空,我真的不明白为什么,因为页面上都可以使用cartIdcatalogItem.catalogItemId这两个值。 我如何正确地通过它们?

Java端点

@PostMapping(ADD_CATALOG_ITEM_TO_CART)
    public void addCatalogItemToCart(@ModelAttribute CartCatalogItem cartCatalogItem, HttpServletResponse response) {

完整HTML:

<h1 th:text="${catalog.name}">...</h1>

<a th:href="@{${customerServiceBaseUrl}+'/home/'+__${cartId}__}">home</a>

<p th:text="'Catalog ID:'+${catalog.catalogId}"></p>
<p th:text="'Name: '+${catalog.name}"></p>
<table>
    <th:block th:each="catalogItem : ${catalog.catalogItems}">
        <tr>
            <th>article id</th>
            <th>catalogitem id</th>
            <th>name</th>
            <th>price</th>
        </tr>
        <tr>
            <td th:text="${catalogItem.articleId}">...</td>
            <td th:text="${catalogItem.catalogItemId}">...</td>
            <td th:text="${catalogItem.name}">...</td>
            <td th:text="${catalogItem.price}">...</td>
            <td><form action="#" th:action="@{${cartServiceBaseUrl}+'/addCatalogItemToCart'}" th:object="${cartCatalogItem}"  method="post">
                <input type="hidden" th:value="${cartId}" th:field="*{cartId}" />
                <input type="hidden" th:value="${catalogItem.catalogItemId}" th:field="*{catalogItemId}" />
                <input type="submit" value="add to cart" />
            </form></td>
        </tr>
    </th:block>
</table>

我的目标:为具有隐藏输入字段的对象分配属性,并将其传递给控制器​​方法。

1 个答案:

答案 0 :(得分:0)

您没有从控制器设置值,这就是两个值都为null的原因。 在控制器上使用此代码。 例如:

Model and View model=new Model and View ("Your thyme leaf template name");
model.put('your key name by which you an access on your thyme leaf 
 page',cart Id);
 return model;

这将起作用。