做教育网站宣传策略,十堰做网站排名,新安人才网,哈尔滨网站制作费用Content type application/x-www-form-urlencoded;charsetUTF-8 not supported 问题背景新增页面代码改造 问题背景
这里有一个需求#xff0c;前端页面需要往后端传参#xff0c;参数包括主表数据字段以及子表数据字段#xff0c;由于主表与子表为一对多关系#xff0c;在… Content type application/x-www-form-urlencoded;charsetUTF-8 not supported 问题背景新增页面代码改造 问题背景
这里有一个需求前端页面需要往后端传参参数包括主表数据字段以及子表数据字段由于主表与子表为一对多关系在添加一条主表记录可能会添加多条子表记录因此新增数据时需要向后端传参主表字段及子表list数据
新增页面
新增页面效果图 这样的话传统的前台传参后台接收参数的方式就不能用了只能自己手动改写传参的方式传统的传参方式 后端接收参数方式
代码改造
由于本次需要传参list数据因此需要对原有的新增页面传参方法做改造考虑了一下可以通过json的方式传参 后台接收参数对象改造增加list子表对象 后台controller代码需要对入参对象添加RequestBody。 1.RequestBody接收的参数是来自requestBody中即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据比如application/json、application/xml等类型的数据。 2.RequestBody可以将请求体中的JSON字符串按照键名属性名绑定到bean上也可以JSONObject或者Map作为接收类型。 开始测试页面填写数据点击提交可以看到控制台打印的提交参数
[{name:phone,value:3},{name:gwUserName,value:3},{name:orderNo,value:2},{name:deductionGoodsIds,value:2},{name:orderNo,value:1},{name:deductionGoodsIds,value:1},{name:gwlist,value:[{orderNo:2},{orderNo:1},{orderNo:}]}]但是此时后台报错了报错信息
8:22:31.357 32764 [http-nio-19350-exec-5] ERROR com.ruoyi.framework.web.exception.GlobalExceptionHandler - [handleException,95] - Content type application/x-www-form-urlencoded;charsetUTF-8 not supportedorg.springframework.web.HttpMediaTypeNotSupportedException: Content type application/x-www-form-urlencoded;charsetUTF-8 not supportedat org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:224)at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:157)at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:130)at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:126)at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:166)由于这里使用了RequestBody注解来将请求体中的json格式数据映射到对象但是ajax请求使用的是传统的请求方式 ajax请求默认的content-type为application/x-www-form-urlcoded而Spring的RequestBody不处理content-typeapplication/x-www-form-urlcoded的请求因此程序执行就会报错报错信息 因此这里在改变前端传参为json格式数据的时候后端添加RequestBody同时前端ajax请求也需要添加content-typecontent-type内容就是错误提示信息中的内容如下 下面我们再次使用添加了content-type的ajax方法发送请求到后端服务器再来试试是否还报这个错误
10:52:04.723 17120 [http-nio-19350-exec-1] ERROR com.ruoyi.framework.web.exception.GlobalExceptionHandler - [notFount,65] - 运行时异常:org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of com.dongao.project.tmupgradeorderrecord.domain.TmUpgradeOrderRecord out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of com.dongao.project.tmupgradeorderrecord.domain.TmUpgradeOrderRecord out of START_ARRAY tokenat [Source: (PushbackInputStream); line: 1, column: 1]可以看到已经不再报
Content type application/x-www-form-urlencoded;charsetUTF-8 not supported这个错误了但是报了另外一个错误下面我们再来说一下另外一个错误的解决办法 参考博文 org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of com.dongao.project.tmupgradeorderrecord.domain.TmUpgradeOrderRecord out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of com.dongao.project.tmupgradeorderrecord.domain.TmUpgradeOrderRecord out of START_ARRAY token