直接原因是:我的(maven)項目parent父工程pom.xml缺少必要的三個jar包依賴坐標。
解決方法是:在web子模塊的pom.xml里面添加springMVC使用JSON實現AJAX請求。
<!--spring mvc-json依賴--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.9</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.9</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.9</version> </dependency>
<spring.version>5.0.15.RELEASE</spring.version>
jsp頁面的<script>標簽
//用jQuery實現AJAX請求提交數據到服務器端 //保存數據到服務器,成功時控制台打印顯示信息 var selectListTest = new Array(); selectListTest[0] = "param1"; selectListTest[1] = "param2"; selectListTest[2] = "param3"; $.ajax({ type:"POST", url:"${pageContext.request.contextPath}/product/delete.do", contentType:"application/json",//jQuery的ajax提交數組使得springMVC使用必填參數 //接收用@requestBody data:JSON.stringify(selectListTest), //數組通過JSON.stringify格式化 success:function (data) { alert(data); } });
視圖層Controller類的Method
//刪除產品的某個分類通過產品編號 @RequestMapping("/delete.do") @ResponseBody public String deleteByNum(@RequestBody List<String> selectListTest)throws Exception{ System.out.println( "JSP頁面通過AJAX技術提交POST請求的路徑找到。" ); // productService.deleteByNum(product); System.out.println( selectListTest ); System.out.println( "JSP頁面通過AJAX技術提交字符串數組成功實現。" ); return"redirect:findAll.do"; }
總結一下,解決該問題需注意一下三點:
1. 使用jackson依賴jar包。
2. jQuery的 $.ajax() 里面需要對JSP頁面里的字符串數組提交之前格式化。
var testList=['1','2','3']; $.ajax({ type: "post", url: "${pageContext.request.contextPath}/product/delete.do", contentType:"application/json", data:JSON.stringify(testList), success: function(obj){ alert(obj.description); }, error: function(obj){ alert("操作出錯"); return false; } });
3. Controller控制層AJAX請求的調用的方法需在參數前加 @RequestBody注解。
public void method(@RequestBody List<String> testList) {
return;
}
==================
end
參考資料:
關於Ajax請求傳遞數組參數的解決辦法