我询问如何从本地存储发送信息到春天,没有回答https://stackoverflow.com/questions/38827432/send-array-from-local-storage-to-spring,所以我试图这样做,出现了新的问题 截至目前JS看起来像:
function sendToJavaBuy() {
cartWhisky = JSON.parse(localStorage.getItem("shoppingCart"));
var newArray = [];
var i = 0;
for(i in cartWhisky){
newArray[i] = cartWhisky[i].name +"_"+ cartWhisky[i].quantity;
i++;
console.log("newArray[i]"+newArray);
}
$.ajax({
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
},
type: "POST",
data :
JSON.stringify(newArray),
url: 'buySuccessfulWhisky',
success: function (msg) {
window.location.href = "buySuccessfulWhisky";
//console.log(data)
}
});
}
爪哇:
@RequestMapping(value = "buySuccessfulWhisky", method ={RequestMethod.GET, RequestMethod.POST})
public ModelAndView view(@RequestBody List<String> newArray) {
System.out.println(newArray);
System.out.println();
for(String properties:newArray) {
String[] split = properties.split("_");
String name = split[0];
Integer quantity = Integer.valueOf(split[1]);
System.out.println("name:= "+name);
System.out.println("quantity:= "+quantity);
// whiskyService.changeInfoInDB(name, quantity);
}
List<WhiskyDTO> whiskyDTOs =whiskyService.seeAllWhisky();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("viewAvailableWhisky", whiskyDTOs);
modelAndView.setViewName("whisky");
return modelAndView;
}
}
我在UI上看到一个例外: 我读过论坛,但无法理解我该怎么办这个错误。
也许我有问题,因为这个: 我从JS </ p>表到HTMLWhitelabel错误页面
这个应用程序没有/ error的显式映射,所以你看到了 这是一个后备。
- Tue Aug 09 12:11:39 EEST 2016出现意外错误(type = Bad Request,status = 400)。缺少必需的请求正文: public org.springframework.web.servlet.ModelAndView
com.example.controller.buy.SuccessfulBuyWhiskey.view(java.util.List中)
var cartArray = listCart();
var table ='';
displayShow();
function displayShow() {
table = '';
for(var r in cartArray){
table +='<tr><td width="50"><img src="' + cartArray[r].photo + '" width=35 height=80></td>\
<td width="100">'+cartArray[r].name+'</td>\
<td width="150">'+cartArray[r].describe+'</td>\
<td width="100">\
<table width="80"><td align="right"><button class="minus" data-name="'+cartArray[r].name+'">-</button></td>\
<td align="center"> '+cartArray[r].quantity +'</td>\
<td align="left"><button class="plus" data-name="'+cartArray[r].name+'">+</button></td></tr></table>\
</td>\
+<td width="50" align="center">'+cartArray[r].price+'</td>\
+<td width="80">' + cartArray[r].total + '</td>\
+<td width="50"><button class="deleteItem" data-name="'+cartArray[r].name+'">X</button></td></tr>';
}
$('#trash').html(table);
$("#totalCart").html(totalPriceInCart());
}
答案 0 :(得分:0)
我找到答案,问题出在js,新代码:
cartWhisky = JSON.parse(localStorage.getItem("shoppingCart"));
var newArray = [];
var i = 0;
for (i in cartWhisky) {
newArray[i] = cartWhisky[i].name + "_" + cartWhisky[i].quantity+"_"+cartWhisky[i].photo;
i++;
}
$.ajax({
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
},
type: "POST",
url: '/buySuccessfulWhisky',
data:
JSON.stringify(newArray),
success: function (msg) {
window.location.href = "warehouseWhisky";
答案 1 :(得分:-1)
您可能在控制器映射中缺少正斜杠
更改@RequestMapping(value = "buySuccessfulWhisky", method ={RequestMethod.GET, RequestMethod.POST})
到@RequestMapping(value = "/buySuccessfulWhisky", method= RequestMethod.POST)
希望有效
答案 2 :(得分:-1)
在你的情况下,为什么不在ajax中发送整个cartWhisky
对象。在java中创建一个包含字段name
和quantity
的类。为类创建getter和setter以及daffault构造函数,您不必执行JSON.stringify(cartWhisky)
。
您可以直接:data : cartWhisky
。
在您的控制器中,您可以:
public ModelAndView view(@RequestBody List<CartWhisky> newArray) { ..
现在课程应该是这样的:
public class CartWhisky {
private String name;
private String quantity;
public CartWhisky(){
}
public setName(String name){
this.name = name;
}
public getName(){
return this.name;
}
public setQuantity(String quantity){
this.quantity = quantity;
}
public getQuantity(){
return this.quantity;
}
...
}
如果您没有指定任何其他构造函数,则默认情况下会创建此构造函数,但如果您这样做,则必须创建一个默认构造函数(看起来像示例中的构造函数)。
您还可以拥有其他字段,方法和构造函数,但需要使用。