电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Vue向后臺傳數(shù)組數(shù)據(jù),springboot接收vue傳的數(shù)組數(shù)據(jù)實(shí)例

瀏覽:2日期:2022-10-31 08:07:53

用axios前臺代碼:

let menus_id = this.$refs.tree.getCheckedKeys(); //菜單id [1,2,3]數(shù)組 this.$axios.get('/api/epidemic/roleMenus/addBath1',{params:{roleid:this.roleid,menusid:menus_id}}).then((result)=>{ console.log(result) })

后臺代碼:

@RequestMapping('/addBath1') public ResponseObj addBath1(Integer roleid,@RequestParam(value='menusid',required=false) Integer[] menusid) { //處理代碼。。。。。。。 return responseObj; }

前臺報(bào)錯:

xhr.js?ec6c:178 GET http://localhost:8080/api/epidemic/roleMenus/addBath1?roleid=2&menusid[]=1&menusid[]=101&menusid[]=102&menusid[]=103&menusid[]=104&menusid[]=2&menusid[]=201&menusid[]=202&menusid[]=203&menusid[]=3&menusid[]=301&menusid[]=302&menusid[]=303&menusid[]=304&menusid[]=4&menusid[]=401&menusid[]=402&menusid[]=403&menusid[]=404 400 (Bad Request)dispatchXhrRequest @ xhr.js?ec6c:178xhrAdapter @ xhr.js?ec6c:12dispatchRequest @ dispatchRequest.js?c4bb:52Promise.then (async)request @ Axios.js?5e65:61Axios.<computed> @ Axios.js?5e65:76wrap @ bind.js?24ff:9updRoleMenus @ AuthList.vue?e7ca:131invokeWithErrorHandling @ vue.esm.js?efeb:1863invoker @ vue.esm.js?efeb:2188invokeWithErrorHandling @ vue.esm.js?efeb:1863Vue.$emit @ vue.esm.js?efeb:3897handleClick @ element-ui.common.js?ccbf:9417invokeWithErrorHandling @ vue.esm.js?efeb:1863invoker @ vue.esm.js?efeb:2188original._wrapper @ vue.esm.js?efeb:7565createError.js?16d0:16 Uncaught (in promise) Error: Request failed with status code 400at createError (createError.js?16d0:16)at settle (settle.js?db52:17)at XMLHttpRequest.handleLoad (xhr.js?ec6c:61)

Vue向后臺傳數(shù)組數(shù)據(jù),springboot接收vue傳的數(shù)組數(shù)據(jù)實(shí)例

百度到后臺改為:

@RequestMapping('/addBath1') public ResponseObj addBath1(Integer roleid,@RequestParam(value='menusid[]',required=false) Integer[] menusid) { //、、、、、、、、 return responseObj; }

請求前臺依然報(bào)錯,這次后臺也報(bào)錯:

java.lang.IllegalArgumentException: Invalid character found in the request target [/epidemic/roleMenus/addBath1?roleid=2&menusid[]=1&menusid[]=101&menusid[]=102&menusid[]=103&menusid[]=104&menusid[]=2&menusid[]=201&menusid[]=202&menusid[]=203&menusid[]=3&menusid[]=301&menusid[]=302&menusid[]=303&menusid[]=304&menusid[]=4&menusid[]=401&menusid[]=402&menusid[]=403&menusid[]=404]. The valid characters are defined in RFC 7230 and RFC 3986at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:491) ~[tomcat-embed-core-9.0.36.jar:9.0.36]at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:260) ~[tomcat-embed-core-9.0.36.jar:9.0.36]at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.36.jar:9.0.36]at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-9.0.36.jar:9.0.36]at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) [tomcat-embed-core-9.0.36.jar:9.0.36]at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.36.jar:9.0.36]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121]at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.36.jar:9.0.36]at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]

Vue向后臺傳數(shù)組數(shù)據(jù),springboot接收vue傳的數(shù)組數(shù)據(jù)實(shí)例

后來試了百度的一堆操作,依然沒解決,貌似tocmat版本太高?不清楚

最后百般嘗試,前臺用路徑傳參:

解決辦法:

前臺vue傳參代碼:

let menus_id = this.$refs.tree.getCheckedKeys(); //菜單id [1,2,3]數(shù)組 this.$axios.get('/api/epidemic/roleMenus/addBath1?roleid='+this.roleid+'&menusid='+menus_id).then((result)=>{ console.log(result) }).catch((err)=>{ console.log('---出錯---!'+err.message) }) },

后臺接收:

@RequestMapping('/addBath1') public ResponseObj addBath1(Integer roleid,@RequestParam(value='menusid',required=false) Integer[] menusid) { //處理代碼。。。。。。。 return responseObj; }

通過這樣路徑傳參結(jié)果解決問題。。。。

補(bǔ)充知識:vue+springboot項(xiàng)目,前端傳送的對象中含有數(shù)組、對象等屬性,傳到后端變?yōu)镾tring,出現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換問題:String不能轉(zhuǎn)換為數(shù)組或?qū)ο?/b>

問題背景:

一個項(xiàng)目中包含員工、部門兩個表,員工和部門是多對一的關(guān)系。

員工表對應(yīng)的bean是EmpBean,部門表對應(yīng)的bean是DepBean。

EmpBean的屬性包含員工表的所有字段(基本數(shù)據(jù)類型),還包含一個depBean(對應(yīng)其所在部門的信息,數(shù)據(jù)類型為DepBean)。

從數(shù)據(jù)庫查員工時,將員工信息封裝在empBean(數(shù)據(jù)類型為EmpBean)中,也會通過表連接,將其所在的部門的信息查出來封裝在depBean中。

前端有一個自定義的對象:emp(只包含員工表中字段),更新員工信息,先將后端傳過來的empBean復(fù)制給前端的bean,然后通過數(shù)據(jù)綁定,將用戶更改的信息綁定到前端emp相應(yīng)的屬性中,此時前端emp中也有depBean了。

前端用戶提交更新,會將前端emp傳給后端,此時,前端emp中depBean就是字符串而不是對象,后端如果用empBean接收數(shù)據(jù),就會出現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換問題。

問題分析:

數(shù)據(jù)流如下:

表->后端bean->前端object1->前端object2->后端bean->表

前端接收數(shù)據(jù)之后,呈現(xiàn)在前端的頁面表格中。每一行數(shù)據(jù)對應(yīng)著后端的一個empBean。

前端編輯emp信息后,傳到后端,更新數(shù)據(jù)庫。

通過問題背景中的描述也可以知道,兩個方向的數(shù)據(jù)流動并不是平衡的,后端無論傳什么,前端都能接收,但是前端只能傳字符串,且后端只有在類型兼容時才能接收數(shù)據(jù)。

復(fù)雜的數(shù)據(jù)類型(對象、數(shù)組)可以順利地從后端傳到前端,但是再從前端傳回來時都變成了字符串,后端不能接收了。

而且,上述問題中的depBean即使被成功傳到后端也沒什么用。如果有用,也可以單獨(dú)作為一個對象,而不是前端emp的屬性傳到后端。

解決方案:

前端呈現(xiàn)員工信息時,需要部門信息。

前端更新員工信息后,只需把更新的員工信息傳回到后端即可。

1.empBean中包含depBean中所含有的全部字段,但是不包含depBean對象。

可行,但是不規(guī)范,EmpBean中有大量的DepBean就很奇怪了。

2.后端單獨(dú)單獨(dú)查所有部門信息,并把所有部門信息封裝,傳遞到前端,然后前端呈現(xiàn)員工信息時,根據(jù)關(guān)聯(lián)字段取出需要的部門信息。

可行,但是需要兩次查詢數(shù)據(jù)庫,且如果部門特別多呢?前端呈現(xiàn)員工信息可以分頁,需要的數(shù)據(jù)是很少的。如果部門特別多,又需要單獨(dú)傳遞所有的部門信息,數(shù)據(jù)量可能會很大。

3.根據(jù)分頁獲取的員工信息,獲取相應(yīng)的部門,并單獨(dú)封裝傳遞給前端。

可行,但是也是需要兩次查詢,而且后端處理數(shù)據(jù)的邏輯會變得比較復(fù)雜。

4.刪除object2中對象屬性(數(shù)據(jù)類型為對象等非基礎(chǔ)類型的屬性)

不可行。兩種刪除方法:

(1)、delete刪除的結(jié)果是undefined,但是還是存在這個屬性的。

(2)、屬性=undefined,也沒能刪除掉屬性,屬性為object object

(為什么不刪除object1中屬性?object1用來接收后端數(shù)據(jù)并作為呈現(xiàn)數(shù)據(jù)的數(shù)據(jù)源,所以不適合刪除。object2用來接收object的數(shù)據(jù)作為初始數(shù)據(jù),并用來接收用戶輸入數(shù)據(jù),然后傳回給后端,所以可以刪除其中無用的屬性)

5.在前端object1->前端object2這個過程中,使用可以排除對象中非基礎(chǔ)數(shù)據(jù)類型屬性的復(fù)制方法。

可行,object1接收后端數(shù)據(jù),并根據(jù)需要呈現(xiàn)數(shù)據(jù),且在編輯時復(fù)制給object2,作為初始數(shù)據(jù)。object2接收用戶通過瀏覽器(頁面)輸入或更新的數(shù)據(jù),然后傳回給后端。數(shù)據(jù)從后端->前端,和從前端->后端需求是不一樣的,轉(zhuǎn)換就可以在前端object1->前端object2這個過程中進(jìn)行。

6.在后端添加中間層dto,接收前端傳過來的對象empDto,再進(jìn)行相應(yīng)的處理,直接用來進(jìn)行數(shù)據(jù)庫操作。或根據(jù)實(shí)際情況按需傳給empBean后,再進(jìn)行數(shù)據(jù)庫操作。

可行,但是增加了一層,系統(tǒng)結(jié)構(gòu)變了,而且除非創(chuàng)建封裝數(shù)據(jù)類型轉(zhuǎn)化的類或方法,不然將empDto數(shù)據(jù)傳遞給empBean的過程還是比較麻煩的(將empDto中對應(yīng)員工信息的屬性(基礎(chǔ)類型屬性)復(fù)制給empBean,將empBean中的depBean設(shè)置為null就好,因?yàn)椴恍枰?/p>

而且前端傳過來的depBean,就是原來的depBean(更新員工信息時),即使接收了,也沒什么用。

總結(jié):

我最終采取的是解決方案5。

方案4、5、6都嘗試過,1、2、3沒有嘗試過。

以上這篇Vue向后臺傳數(shù)組數(shù)據(jù),springboot接收vue傳的數(shù)組數(shù)據(jù)實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
主站蜘蛛池模板: 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 走心机厂家,数控走心机-台州博城智能科技有限公司 | 机械立体车库租赁_立体停车设备出租_智能停车场厂家_春华起重 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | POS机官网 - 拉卡拉POS机免费办理|官网在线申请入口 | 面粉仓_储酒罐_不锈钢储酒罐厂家-泰安鑫佳机械制造有限公司 | 免费网站网址收录网_海企优网站推荐平台 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 「安徽双凯」自动售货机-无人售货机-成人用品-自动饮料食品零食售货机 | 模具ERP_模具管理系统_模具mes_模具进度管理_东莞市精纬软件有限公司 | 涂层测厚仪_光泽度仪_uv能量计_紫外辐照计_太阳膜测试仪_透光率仪-林上科技 | 商秀—企业短视频代运营_抖音企业号托管 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 三轴曲线机-端子插拔力试验机|华杰仪器 | 环球电气之家-中国专业电气电子产品行业服务网站! | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 聚合氯化铝价格_聚合氯化铝厂家_pac絮凝剂-唐达净水官网 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 苏州同创电子有限公司 - 四探针测试仪源头厂家 | 智慧农业|农业物联网|现代农业物联网-托普云农物联网官方网站 | 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 | 慢回弹测试仪-落球回弹测试仪-北京冠测精电仪器设备有限公司 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 环球电气之家-中国专业电气电子产品行业服务网站! | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 剪刃_纵剪机刀片_分条机刀片-南京雷德机械有限公司 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 精密线材测试仪-电线电缆检测仪-苏州欣硕电子科技有限公司 | 上海质量认证办理中心 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 |