關於動態參數使用@PathVariable的解析
動態參數使用@PathVariable解析
現在有如下的一條超鏈接
<a href="<c:url%20value=" rel="external nofollow" /actions/article/readArticle/${article.id}"/> " target="_blank">${article.title}</a>
這條超鏈接的特點就是在URL路徑中添加瞭EL表達式解析出來的id值。
因此,在SpringMVC的Controller層中,需要解析它,使用@PathVariable("articleId") Long articleId 來解析。
@PathVariable是專門用來解析URL請求中的動態參數。
在Controller層的代碼如下
public static final String URL_ARTICLE_READ = "article/readArticle/{articleId}"; /** * 去文章詳情頁面 * 根據URL路徑中指定的文章ID號,去獲取制定文章的內容 * * @param articleId 指定的文章的ID號 * @return 獲取此文章的數據,並去文章詳情頁面 */ @RequestMapping(value = {URL_ARTICLE_READ} ) public ModelAndView readArticle(@PathVariable("articleId") Long articleId){ LOGGER.info("enter article detail page, articleId = {}",articleId); final Article article = articleService.getArticleById(articleId); ... }
這樣,頁面上的${article.id}的值,就最終映射到瞭Java中的Long articleId 上瞭。
獲取路徑中的參數值@PathVariable中的value
本期講的是@PathVariable註解的具體使用。與@RequestParam的區別
- @PathVariable獲取URI地址中的參數值,需要結合URI模板映射
- @PathVariable會將數據放到模型中,界面可以通過el表達式獲取(即瀏覽器上面可以顯示出來),但是@RequestParam不能通過界面獲得
1.@PathVariable String name
加上@PathVariable就能夠獲取到瀏覽器中rul的參數值
@RequestMapping("/get_param") @Controller public class GetParamController { @RequestMapping("/test6/{name}") public String test6(@PathVariable String name) { System.out.println("GetParamController test6()..."); System.out.println("name="+name); return "test";//跳轉到test.jsp /* * ../test6/tom 結果:name=null 就要在參數裡面加上@PathVariable 結果就變為:name=tom * ../test6/tom?name=kk 結果:name=tom 拿到的是URI路徑裡面的值跟後面的沒有任何關系 * */ } }
2.@PathVariable(“username”) String name
當瀏覽器中的是username,而後臺要接收的是name
就會報錯,由於username和name不匹配
此時要加上value值,@PathVariable(“username”)
@RequestMapping("/get_param") @Controller public class GetParamController { @RequestMapping("/test7/{username}") //username與下面的name不一致,報錯,就需要加上@PathVariable("username") public String test7(@PathVariable("username") String name) {//name和username不一致時,用@PathVariable("username") System.out.println("GetParamController test7()..."); System.out.println("name="+name); return "test";//跳轉到test.jsp } }
此時就不會報錯瞭
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 使用@PathVariable註解如何實現動態傳值
- Springmvc @PathVariable的用法解析
- SpringBoot多種場景傳參模式
- 聊聊@RequestParam,@PathParam,@PathVariable等註解的區別
- SpringMvc接受請求參數的幾種情況演示