[英]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.