后台list怎么传前台

xiaoxiao2025-09-12  294

前后台数据交互的时候还是使用String吧。

先描述下我的整个前后台数据交互的过程:

1.前台发送请求获取一个商品列表

2.后台发送一个列表给前台

3.前台接收后,取出该列表的子列表,再传送给后台

4.后台接收到该列表后,进行处理

整个数据交互的过程已经描述完毕。

我的处理方案是:

1.后台接收带请求后,将该list转换成JSONArray对象,然后将其再转换成为String类型的数据发送给前台。

2.前台收到该数据后,直接放入其对应的变量中。取出需要的子列表后,用js将其转换称为json的String类型

3.后台用String类型接收后,再将其转换为JSONArray,再继续将JSONArray转换称List类型的,后台再继续处理它需要的逻辑。

贴上会让人觉得很懵的代码:(listGoodsByQ方法返回的是JSONArray类型)

1.前台发送请求获取一个商品列表

search: function () { console.log("搜索商品"); axios.get('../../WeChatMaterial/search?q=' + app.query) .then(function (response) { // console.log(response.data); app.searchList = response.data; }) },

2. 后台发送一个列表给前台

//获取商品列表 @GetMapping("search") @ResponseBody public void searchByQ(HttpServletResponse response, String q) { try { response.setCharacterEncoding("utf-8"); PrintWriter writer = response.getWriter(); log.info(youzanAPIManager.listGoodsByQ(q)); writer.print(youzanAPIManager.listGoodsByQ(q).toString()); writer.flush(); writer.close(); } catch (IOException e) { log.error(ExceptionUtils.getTraceInfo(e)); } } 3.前台接收后,取出该列表的子列表,再传送给后台(前台的变量) query:"", goods:[],//传到后台 goodsList:[], searchList:[]

 (在获取传回的searchList时,查看控制台它的格式是[recommendation(id=111 name=商品1).....]大概就是这样的,因为时间久了,突然想来才写的博客    )

这个代码就是提交了个表单 (goodsList是’原生‘的子列表 在提交表单的时候,查看控制台可以看到她的格式[Object object])

app.goods = JSON.stringify(app.goodsList);

4.后台接收子列表

//添加文章 @PostMapping("insert") @ResponseBody public Object insertWeChatMaterial(HttpServletRequest request, RecommendationItem recommendationItem, GoodsArticle goodsArticle, String goods) { try { UserInfo userInfo = (UserInfo) request.getAttribute("userInfo"); log.info("goodsList--" + goods); JSONArray array = JSONArray.fromObject(goods); List<RecommendationGoods> goodsList = (List<RecommendationGoods>) JSONArray.toCollection(array, RecommendationGoods.class); recommendationItem.setName(goodsArticle.getTitle()); Boolean flag = recommendationItemService.saveMaterial(recommendationItem, goodsArticle, goodsList); if (flag) { return ResponseObject.successWith(userInfo.getDisplayName(), null); } else { return ResponseObject.failWith(500, "数据添加失败!"); } } catch (Exception e) { log.error(ExceptionUtils.getTraceInfo(e)); return ResponseObject.failWith(500, e.getStackTrace().toString()); } }

 

转载请注明原文地址: https://www.6miu.com/read-5036217.html

最新回复(0)