我很喜欢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>
不幸的是,两个值都为空,我真的不明白为什么,因为页面上都可以使用cartId
和catalogItem.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>
我的目标:为具有隐藏输入字段的对象分配属性,并将其传递给控制器方法。
答案 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;
这将起作用。