上面屏幕截图中的表格代码
<table>
<tr>
<th class="tg-address">Title</th>
<th class="tg-houseprice">Price</th>
<th class="tg-crimerating">Author</th>
<th class="tg-schools">Category</th>
<th class="tg-university">Book Cover</th>
<th class="tg-bars">Amount in Stock</th>
<th class="tg-bars"> </th>
</tr>
<c:forEach var="o" items="${booksList}">
<tr>
<td width="3.5%" height="50"><c:out value="${o.title}"/></td>
<td width="3.5%" height="50"><c:out value="${o.price}"/></td>
<td width="3.5%" height="50"><c:out value="${o.author}"/></td>
<td width="3.5%" height="50"><c:out value="${o.category}"/></td>
<td width="3.5%" height="50"><c:out value="${o.image}"/></td>
<td width="3.5%" height="50"><c:out value="${o.quantity}"/></td>
<td width="3.5%" height="50"><a href="shoppingCart">Add Book to Shopping Cart</a></td>
</tr>
</c:forEach>
将列表打印到JSP页面的控制器方法
@RequestMapping(value = "viewallbooks", method = RequestMethod.GET)
public String bookList(@Valid Book book, Model model) {
List<Book> booksList = new ArrayList<>();
booksList = bookRepository.findAll();
model.addAttribute("booksList", booksList);
return "bookListPage";
}
我通过将其值传递到List
并将此列表传递到JSP页面c:forEach
上的bookListPage
循环来打印MySQL表的内容。如果您查看表格和/或屏幕截图,您会注意到我可以选择将图书添加到购物车(用户对象类中的图书对象列表),这会将相关图书添加到当前登录用户图书清单。
屏幕截图中的表格由不同的图书对象列表组成(即目前库存中只有3本图书),我的问题是如何在按下相应的{{1链接。
我在点击找到当前登录用户的链接后调用此Controller方法,并将我正在尝试传递的书添加到他们的列表中。但是我似乎无法解决这个问题。
Add Book to Shopping Cart
答案 0 :(得分:2)
也许您缺少将jsp代码封装在form
标记内,例如:
<form action="#" th:action="@{shoppingCart}" th:object="${o}" method="post">
<td width="3.5%" height="50">
<a href="shoppingCart">Add Book to Shopping Cart</a>
</td>
</form>
我认为,由于您传递的是对象,因此必须使用post
方法。但这只有在您想要创建/修改图书时才有意义。由于您只想检索选择要添加到购物车中的哪本书,我建议您按照lucumt建议并仅传递ID,然后检索该书。像这样:
<td width="3.5%" height="50">
<a href="<c:url value='/shoppingcart/${o.id}' />">
Add Book to Shopping Cart
</a>
</td>
最后你的控制器方法应该是这样的:
@RequestMapping(value = " /shoppingcart/{bookId}", method=RequestMethod.GET)
public String shoppingCart(@PathVariable("bookId")int bookId, Model model) {
// This gets the currently logged in user
Authentication loggedInUser = SecurityContextHolder.getContext().getAuthentication();
String username = loggedInUser.getName(); // Authentication for
User user = userRepository.findByUsername(username);
//Retrieve book
Book book = bookService.findBookById(bookId);
// This will add the book to the user's booklist
user.saveBookToShoppingCart(book);
return "shoppingcart";
}