SpringBoot用實體接收Get請求傳遞過來的多個參數(絕對可用)


原文地址:https://blog.csdn.net/qq_19734597/article/details/88897710

最近項目中Controller層查詢接口需要通過實體來接受前端傳過來的多個參數(Get請求),這個問題困擾了我很久,之前在第二家公司的時候,就因為我后端是Get請求,並且是通過實體去接收前端參數的,導致我當天上線搞到半夜沒搞好,這次又遇到,勢必解決它。

一年前,通過查看大量的坑爹文章,發現網上沒有一篇有效的,這次通過阿里主管的協助,成功的通過實體接收到了Get請求傳遞過來的參數,而且是發現了兩種方法。

一、Controller層不帶任何注解接收參數
第一種方法是最簡單的,嚴重懷疑以前怎么沒有用,誰知道呢。。不過這次是真的管用了,最簡單的方式就是Controller接口入參不加任何注解!!!SpringBoot自動做了處理。代碼如下:

/**
* @author zhangzhixiang
* @since v1.0.0
*/
@RestController
@RequestMapping(path = "/ui/institution")
public class InstitutionManagementController {

@GetMapping(value = "/pageQueryForAssign")
public void pageQueryInstitutionsForAssign(InstitutionQueryDTO queryDTO) {

}
}
其實重點就是InstitutionQueryDTO旁邊沒有任何注解,這樣前端正常傳Get參數就好,前端傳參格式示例如下:

http://192.168.63.125/ui/institution/pageQueryForAssign?name='xxx'&sex='男'
這里的name和sex是InstitutionQueryDTO實體中的屬性,SpringBoot會幫我們自動填充到實體中。

二、Controller層通過@ModelAttribute接收參數
這個寫法是在網上閱讀文章找到的,這種方法我也記錄一下。

/**
* @author zhangzhixiang
* @since v1.0.0
*/
@RestController
@RequestMapping(path = "/ui/institution")
public class InstitutionManagementController {

@GetMapping(value = "/test")
public void test(@ModelAttribute InstitutionQueryDTO queryDTO){

}
}
這里的重點是@ModelAttribute注解,他也會將前端傳過來的參數填充到業務實體中,前端傳參格式與方法一相同。

我一年前應該也有通過第一種方式來接受Get請求的參數,但是失敗了沒有接收到,我失敗的原因應該是我的Controller同時接收多個實體入參,所以失敗了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM