【发布时间】:2018-10-07 09:07:00
【问题描述】:
大家好(第一次发帖!)
我正在开发一个简单的 Web 应用程序时遇到问题。
我使用 Spring Boot 创建了一个休息服务 (POST),但是当我从前端尝试此服务时,我无法在我的 @RequestBody 上检索任何值。
调用控制器的javascript如下
bookStore.html
//Submit shopping cart to the backend to be saved
checkout : function() {
//Place holder for the POST Request
this.$http.post('/createOrder', {
'shopCart' : {'basket' : this.shoppingCart}
});
//END Post request
}
OrderController.java
@RequestMapping(value = "/createOrder",
method = RequestMethod.POST)
public String createOrder(@RequestBody ShoppingCart shopCart, Model model) {
Order order = new Order();
Float totalPrice = 0f;
order.setCreationDate(new Date());
List<String> bookIdList = new ArrayList<>();
for (Book book : shopCart.getBasket()) {
bookIdList.add(book.getId());
totalPrice = totalPrice + book.getPrice();
}
order.setItemList(bookIdList);
order.setTotalOrder(totalPrice);
orderRepo.save(order);
List<Order> orderList = orderRepo.findAll();
model.addAttribute("addedOrder", order);
model.addAttribute("orderList", orderList);
return "orderList";
}
ShoppingCart.java
public class ShoppingCart {
private List<Book> basket;
public List<Book> getBasket() {
return basket;
}
public void setBasket(List<Book> basket) {
this.basket = basket;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("BookList [shoppingCart=");
builder.append(basket);
builder.append("]");
return builder.toString();
}
}
请注意,shoppingCart 在 VUE js 中被定义为一个对象数组。当我设置这个值时,它看起来像这样
{"shoppingCart":[{"id":"5add48ed217c1823543f0610","name":"War and Peace","author":"Leo Tolstoy","price":25},{"id":"5add48ed217c1823543f060f","name":"Madame Bovary","author":"Gustave Flaubert","price":20}]}
问题是 shopCart 始终为空。我错过了什么吗?这似乎是一件基本的事情,它与我之前做过的 RequestParam 控制器配合得很好
【问题讨论】:
标签: javascript java spring-boot model-view-controller controller