Spring boot 復(fù)雜參數(shù)傳遞 @RequestBody

在多條件查詢的表格場(chǎng)景中,因?yàn)樾枰獋鬟f的參數(shù)較多,@RequestParam需要更多的代碼量,所以我個(gè)人采用@RequestBody的方式傳遞

Controller中:

    @ResponseBody
    @PostMapping("/users")
    public Page<User> findAll(@RequestBody QueryParams queryParams) {
        return userService.findAll(queryParams);;
    }

實(shí)體類:

public class QueryParams {
    private int pageSize = 0;
    private int pageNumber = 15;
    private String searchText = "";
    private String sortName = "date";
    private String sortOrder = "desc";
    private List<Condition> conditions = Collections.emptyList();

    // get set 方法省略...
}
    // 多重條件選擇對(duì)象
public class Condition {
    private String field;
    private String comparison;
    private String input;
    
    // get set 方法省略...
}

但訪問該請(qǐng)求時(shí),有可能會(huì)出現(xiàn)這樣的錯(cuò)誤:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
Cannot construct instance of `com.xxx.domain.QueryParams` 
(no Creators, like default construct, exist): 
cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (PushbackInputStream); line: 1, column: 2]

遇到這種情況,請(qǐng)把使用@RequestBody的實(shí)體類的全部構(gòu)造參數(shù)刪除,包括其嵌套的實(shí)體類(QueryParams 類中嵌套的 Condition)。

刪除之后,運(yùn)行正常。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,868評(píng)論 18 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,522評(píng)論 1 92
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,937評(píng)論 6 342
  • (掌聲中,羅永浩走到蘋果發(fā)布會(huì)現(xiàn)場(chǎng)) 謝謝大家,請(qǐng)坐! 今天是我們Apple公司的發(fā)布會(huì),我和在場(chǎng)的各位一樣都很興...
    緣下雜音閱讀 296評(píng)論 0 1
  • 到底還是哭了,這段時(shí)間過得真的不開心,承受了太多的壓力。因?yàn)閷I(yè)的認(rèn)可度不高,想著跨專業(yè)工作,卻毫無優(yōu)勢(shì)。太多的選...
    那時(shí)候閱讀 251評(píng)論 0 0