簡體   English   中英

Spring Boot-如何在Spring RestController中的映射中獲取所有請求參數?

[英]Spring Boot - How to get all request params in a map in Spring RestController?

范例網址:

../get/1?attr1=1&attr2=2&attr3=3

我不知道attr1,att2和attr3的名稱。

當我運行此代碼時,我得到的“ allRequestParams”的大小等於1

@RequestMapping(value = "/get/", method = RequestMethod.GET)
public String search(
@RequestParam Map<String,Integer> allRequestParams) {
   System.out.println(allRequestParams.size());
   return "";
}

是Spring的問題還是我寫錯了代碼。 謝謝!

您可以定義一個包含地圖的POJO。如下所示:

@RequestMapping(value = "/get/{searchId}", method = RequestMethod.POST)
public String search(
@PathVariable("searchId") Long searchId,
@RequestParam SearchRequest searchRequest) {
 System.out.println(searchRequest.getParams.size());
 return "";
}

public class SearchRequest {   
private Map<String, String> params;
}

請求對象:

"params":{
     "birthDate": "25.01.2011",
    "lang":"en"       
 }

對於您的特定示例,您是否未缺少@PathVariable來訪問示例URL中值為“ 1”的Path變量?

@RequestMapping(value = "/get/{searchId}", method = RequestMethod.GET)
public String search(
@PathVariable("searchId") Long searchId,
@RequestParam Map<String,String> allRequestParams) {
   System.out.println(allRequestParams.size());
   return "";
}

另外,您要導入java.util.Map嗎?

如果您以查詢參數的形式傳遞請求屬性,則可以使用HttpServletRequest直接獲取它。 將參數作為參數傳遞給您的方法,並像httpServletRequest.getParameterMap()一樣使用它。 這將返回一個不變的請求參數java.util.Map。 映射的每個條目將具有String類型的鍵和String []類型的值。 因此,如果只有一個值,則可以直接作為entry.getValue()[0]進行訪問。 代碼看起來像這樣來訪問值。

@RequestMapping(value = "/get/", method = RequestMethod.GET) 
public String search(HttpServletRequest httpServletRequest) {
   Map<String, String[]> requestParameterMap = httpServletRequest.getParameterMap();
   for(String key : requestParameterMap.keySet()){
        System.out.println("Key : "+ key +", Value: "+ requestParameterMap.get(key)[0]);
   }
   return "";
}

希望這可以幫助 !!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM