欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解讀SpringBoot接收List<Bean>參數(shù)問(wèn)題(POST請(qǐng)求方式)

 更新時(shí)間:2022年09月22日 14:13:24   作者:小狐貍和小兔子  
這篇文章主要介紹了解讀SpringBoot接收List<Bean>參數(shù)問(wèn)題(POST請(qǐng)求方式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

接收List<Bean>參數(shù)問(wèn)題(POST請(qǐng)求方式)

接部門(mén)排序后,前端已經(jīng)返回了我們想要的數(shù)據(jù)格式(采用FormData方式),但是后臺(tái)一直遲遲無(wú)法接收到我想要的(不想用json字符串來(lái)接收,還得轉(zhuǎn)),一臉問(wèn)號(hào),這是什么操作?一定是姿勢(shì)不對(duì)

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
    at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:226)
    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:124)
    at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:131)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:981)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:884)

看過(guò)很多文章,有的說(shuō)建立一個(gè)實(shí)體類,把list對(duì)象放進(jìn)去當(dāng)成屬性,然后會(huì)自動(dòng)映射賦值,但那樣有點(diǎn)麻煩,不想弄

上述異常的最終解決方案為前端Ajax請(qǐng)求時(shí),添加contentType即可

jQuery.ajax({
? ? async: false,
? ? cache: false,
? ? type: 'POST',
? ? //添加
? ? contentType: "application/json; charset=utf-8",
? ? dataType: 'json',
? ? data: JSON.stringify(paramData),
? ? url: '...',
? ? error: function () {
? ? ? ??
? ? },
? ? success: function (data) {
? ? ? ? //console.log(data)
? ? }
});

后臺(tái)使用@RequestBody注解對(duì)屬性做映射即可,如下

? ? /**
? ? ?* 修改部門(mén)排序
? ? ?*
? ? ?* @param request
? ? ?* @param depts
? ? ?* @return
? ? ?*/
? ? @PostMapping(value = "/sort")
? ? public DDResult updateDeptTreeSort(HttpServletRequest request, @RequestBody List<Dept> depts) {
? ? ? ? return DDResult.success(deptService.updateDeptTreeSort(depts));
? ? }

嘗試過(guò)用如下方式傳遞,然鵝還是失敗了

dept[0].id:10
dept[0].pid:null
dept[0].order:0
dept[1].id:20
dept[1].pid:null
dept[1].order:1

springboot接口參數(shù)為L(zhǎng)ist

簡(jiǎn)單接口參數(shù)

springboot接口訪問(wèn),如果是走h(yuǎn)ttp請(qǐng)求,那么參數(shù)會(huì)默認(rèn)轉(zhuǎn)換成鍵值對(duì)格式,或者是json字符串形式的。

今天就遇到一個(gè)場(chǎng)景,我需要一個(gè)list結(jié)構(gòu)的參數(shù),list里面又是對(duì)象,那我們?cè)撛趺磦鲄⒛兀?/p>

我們不能再瀏覽器上直接拼接參數(shù)發(fā)請(qǐng)求了,例如:

這樣的格式是不被允許的,請(qǐng)求會(huì)報(bào)錯(cuò)。

那么我們轉(zhuǎn)換思路,既然是json格式的參數(shù),那我們就傳json格式

設(shè)置headers

Content-type 的值為application/json

組織傳值參數(shù)list數(shù)據(jù)

在body中,傳值參數(shù),list 使用[]括起來(lái)

代碼實(shí)現(xiàn)請(qǐng)求

public void queryLiveCourseInfoTest(){
   JSONArray jsonArray = new JSONArray();
   JSONObject json1 = new JSONObject();
   json1.put("dn","123");
   json1.put("bossCode","34455");
   jsonArray.add(json1);
   JSONObject json2 = new JSONObject();
   json2.put("dn","234");
   json2.put("bossCode","66666");
   jsonArray.add(json2);

   String arr = jsonArray.toJSONString();
   System.out.println("請(qǐng)求參數(shù):"+arr);

   String url = nativUrl+"";
   try {
      HttpHeaders headers = new HttpHeaders();
      MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
      headers.setContentType(type);
      HttpEntity<ElecMeterDataApi> entity = new HttpEntity<ElecMeterDataApi>(arr,headers);
      String res = restTemplate.postForObject(url, entity, String.class);
      log.info("結(jié)果:"+res);
   } catch (RestClientException e) {
      log.error("請(qǐng)求異常" + e.getMessage());
   }
}

controller層設(shè)置兩個(gè)注解

@ResponseBody 和@RequestBody

  • @ResponseBody 沒(méi)有該注解的時(shí)候,會(huì)發(fā)生postman 請(qǐng)求找不到error 404;
  • @RequestBody 沒(méi)有該注解的時(shí)候,會(huì)發(fā)生參數(shù)值傳輸不過(guò)去;

這樣我們就可以實(shí)現(xiàn)通過(guò)接口直接傳遞list對(duì)象數(shù)據(jù)。

其中,list中的對(duì)象,我們?cè)趥鲄?shù)時(shí)只要組織的json格式的數(shù)據(jù)中,包含該對(duì)象的屬性以及對(duì)應(yīng)值,接口參數(shù)的對(duì)象就可以接收到該屬性值。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Hadoop之Mapreduce序列化

    Hadoop之Mapreduce序列化

    本文主要帶我們了解Mapreduce序列化,序列化就是把內(nèi)存中的對(duì)象,轉(zhuǎn)換成字節(jié)序列(或其他數(shù)據(jù)傳輸協(xié)議)以便于存儲(chǔ)到磁盤(pán)(持久化)和網(wǎng)絡(luò)傳輸。想進(jìn)一步了解更多的小伙伴,可以參考閱讀本文
    2023-03-03
  • java?class?name實(shí)例深入精講

    java?class?name實(shí)例深入精講

    這篇文章主要為大家介紹了java?class?name實(shí)例深入精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • quartz時(shí)間表達(dá)式Cron詳解

    quartz時(shí)間表達(dá)式Cron詳解

    這篇文章介紹了quartz時(shí)間表達(dá)式Cron,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Springboot?多級(jí)緩存設(shè)計(jì)與實(shí)現(xiàn)方案

    Springboot?多級(jí)緩存設(shè)計(jì)與實(shí)現(xiàn)方案

    多級(jí)緩存是提升高并發(fā)系統(tǒng)性能的關(guān)鍵策略之一,它不僅能夠減少系統(tǒng)的響應(yīng)時(shí)間,提高用戶體驗(yàn),還能有效降低后端系統(tǒng)的負(fù)載,防止系統(tǒng)過(guò)載,這篇文章主要介紹了Springboot?多級(jí)緩存設(shè)計(jì)與實(shí)現(xiàn),需要的朋友可以參考下
    2024-02-02
  • springboot全局日期格式化的兩種方式

    springboot全局日期格式化的兩種方式

    這篇文章主要介紹了springboot全局日期格式化的兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 深入分析JAVA Vector和Stack的具體用法

    深入分析JAVA Vector和Stack的具體用法

    這篇文章主要介紹了深入分析JAVA Vector和Stack的具體用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Mybatis Properties 配置優(yōu)先級(jí)詳解

    Mybatis Properties 配置優(yōu)先級(jí)詳解

    這篇文章主要介紹了Mybatis Properties 配置優(yōu)先級(jí),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java簡(jiǎn)單從文件讀取和輸出的實(shí)例

    Java簡(jiǎn)單從文件讀取和輸出的實(shí)例

    下面小編就為大家?guī)?lái)一篇Java簡(jiǎn)單從文件讀取和輸出的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 深入理解Java8新特性之新日期時(shí)間API的應(yīng)用

    深入理解Java8新特性之新日期時(shí)間API的應(yīng)用

    自從 14 年發(fā)布 Java 8 以后,我們古老 java.util.Date 終于不再是我們 Java 里操作日期時(shí)間的唯一的選擇,其實(shí) Java 里的日期時(shí)間的相關(guān) API 一直為世猿詬病,今天我們來(lái)了解新的日期時(shí)間API是怎么使用吧
    2021-11-11
  • Java實(shí)體類之間的相互轉(zhuǎn)換方式

    Java實(shí)體類之間的相互轉(zhuǎn)換方式

    這篇文章主要介紹了Java實(shí)體類之間的相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論