2017-06-16 48 views
0

是否有可能者區分這兩個請求的URI在一個控制器處理程序:如何檢查獲取參數是否設置?

http://my-uri/ 
http://my-uri/?with_empty_param 
+0

使用'@ RequestMapping'的'params'參數。 –

+0

在這兩種情況下它的值是否爲空? –

+0

不確定你的評論意味着什麼......如果它不存在(沒有價值或不存在)沒有價值... –

回答

1

HttpServletRequest對象具有ParameterMap對象映射參數名和其值。

有了這張圖,我們可以檢查參數是否在servlet請求中傳遞。

// Check if with_empty_param parameter exists 
    if (request.getParameterMap().containsKey("with_empty_param ")) { 
     String with_empty_param = request.getParameter("with_empty_param "); 
    } 

如果你想使用Spring的方式,你可以這樣做:

@RequestMapping(value = {"/init"}, method = RequestMethod.GET) 
public String methodName(
@RequestParam Map<String,String> allParams, ModelMap model) { 
if (allParams.containsKey("with_empty_param ")) { 
    ... 
} 
+0

聽起來很簡單 - 我喜歡這樣做,如果沒有另一種方式。 –

+0

我已經更新了答案 –

1

@RequestMapping標註有params參數,您可以使用該。

@RequestMapping 
public void method1() {} 

並檢查param。

@RequestMapping(params={"param"}) 
public void method2() {} 

您還可以使用!否定的檢查,所以如果參數是不存在的。

@RequestMapping(params={"!param"}) 
public void method3() {}