2012-11-18 21 views
65

在此期間,我STUDING的Spring MVC的展示例子(從STS dasboard下載)和我對Request Mapping例子一些簡單的問題:Spring MVC如何在我的控制器方法中使用GET HTTP請求的參數值?

1)在我home.jsp頁我有此鏈接:

 <li> 
      <a id="byParameter" class="textLink" href="<c:url value="/mapping/parameter?foo=bar" />">By path, method, and presence of parameter</a> 
     </li> 

正如你可以通過這個鏈接看到的,我正在做一個HTTP GET請求,它有一個包含值「bar」的「foo」參數。

該HTTP請求由控制器類MappingController以下方法處理:

@RequestMapping(value="/mapping/parameter", method=RequestMethod.GET, params="foo") 
public @ResponseBody String byParameter() { 
    return "Mapped by path + method + presence of query parameter! (MappingController)"; 
} 

這種方法管理HTTP請求(僅GET型)已參數名爲「foo」

哪有我採用這個參數的值(「bar」),並將它放在我的Parameter方法的代碼中的一個變量中?

回答

152

the documentation解釋的,通過使用@RequestParam註釋:

public @ResponseBody String byParameter(@RequestParam("foo") String foo) { 
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = " 
      + foo; 
} 
+3

非常感謝你對你明確的答案,併爲參考文檔 – AndreaNobili

+2

在情況下,當有10個參數的數量,我們必須這樣做10次​​或者有更好的方法用於場景 – Count

+2

@Count:點擊我給文檔的鏈接,然後向上滾動一小段直到「支持方法參數類型」的段落,並閱讀關於「命令或表單對象」的部分 –

33

你也可以使用一個URI模板。如果您將請求構建爲寧靜的URL,Spring可以解析URL中提供的值。

HTML

<li> 
    <a id="byParameter" 
     class="textLink" href="<c:url value="/mapping/parameter/bar />">By path, method,and 
      presence of parameter</a> 
</li> 

控制器

@RequestMapping(value="/mapping/parameter/{foo}", method=RequestMethod.GET) 
public @ResponseBody String byParameter(@PathVariable String foo) { 
    //Perform logic with foo 
    return "Mapped by path + method + presence of query parameter! (MappingController)"; 
} 

Spring URI Template Documentation

相關問題