關(guān)于動(dòng)態(tài)參數(shù)使用@PathVariable的解析
動(dòng)態(tài)參數(shù)使用@PathVariable解析
現(xiàn)在有如下的一條超鏈接
<a href="<c:url value=" rel="external nofollow" /actions/article/readArticle/${article.id}"/> "
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?target="_blank">${article.title}</a>這條超鏈接的特點(diǎn)就是在URL路徑中添加了EL表達(dá)式解析出來的id值。
因此,在SpringMVC的Controller層中,需要解析它,使用@PathVariable("articleId") Long articleId 來解析。
@PathVariable是專門用來解析URL請(qǐng)求中的動(dòng)態(tài)參數(shù)。
在Controller層的代碼如下
public static final String URL_ARTICLE_READ = "article/readArticle/{articleId}";
? ? /**
? ? ?* 去文章詳情頁面
? ? ?* 根據(jù)URL路徑中指定的文章ID號(hào),去獲取制定文章的內(nèi)容
? ? ?*
? ? ?* @param articleId 指定的文章的ID號(hào)
? ? ?* @return ? ? ? ? ?獲取此文章的數(shù)據(jù),并去文章詳情頁面
? ? ?*/
? ? @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 上了。
獲取路徑中的參數(shù)值@PathVariable中的value
本期講的是@PathVariable注解的具體使用。與@RequestParam的區(qū)別
- @PathVariable獲取URI地址中的參數(shù)值,需要結(jié)合URI模板映射
- @PathVariable會(huì)將數(shù)據(jù)放到模型中,界面可以通過el表達(dá)式獲取(即瀏覽器上面可以顯示出來),但是@RequestParam不能通過界面獲得
1.@PathVariable String name
加上@PathVariable就能夠獲取到瀏覽器中rul的參數(shù)值
@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";//跳轉(zhuǎn)到test.jsp
/*
* ../test6/tom 結(jié)果:name=null 就要在參數(shù)里面加上@PathVariable 結(jié)果就變?yōu)?name=tom
* ../test6/tom?name=kk 結(jié)果:name=tom 拿到的是URI路徑里面的值跟后面的沒有任何關(guān)系
* */
}
}
2.@PathVariable(“username”) String name
當(dāng)瀏覽器中的是username,而后臺(tái)要接收的是name

就會(huì)報(bào)錯(cuò),由于username和name不匹配

此時(shí)要加上value值,@PathVariable(“username”)
@RequestMapping("/get_param")
@Controller
public class GetParamController {
@RequestMapping("/test7/{username}") //username與下面的name不一致,報(bào)錯(cuò),就需要加上@PathVariable("username")
public String test7(@PathVariable("username") String name) {//name和username不一致時(shí),用@PathVariable("username")
System.out.println("GetParamController test7()...");
System.out.println("name="+name);
return "test";//跳轉(zhuǎn)到test.jsp
}
}

此時(shí)就不會(huì)報(bào)錯(cuò)了


以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的字符型文件流FileReader和FileWriter詳細(xì)解讀
這篇文章主要介紹了Java中的字符型文件流FileReader和FileWriter詳細(xì)解讀,與字節(jié)型文件流不同,字節(jié)型文件流讀取和寫入的都是一個(gè)又一個(gè)的字節(jié),而字符型文件流操作的單位是一個(gè)又一個(gè)的字符,字符型流認(rèn)為一個(gè)字母是一個(gè)字符,而一個(gè)漢字也是一個(gè)字符,需要的朋友可以參考下2023-10-10
Mybatis配置之<environments>配置元素詳解
這篇文章主要介紹了Mybatis配置之<environments>配置元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
List轉(zhuǎn)換成Map工具類的簡單實(shí)例
下面小編就為大家?guī)硪黄狶ist轉(zhuǎn)換成Map工具類的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
Spring Boot的Maven插件Spring Boot Maven plu
Spring Boot的Maven插件Spring Boot Maven plugin以Maven的方式提供Spring Boot支持,Spring Boot Maven plugin將Spring Boot應(yīng)用打包為可執(zhí)行的jar或war文件,然后以通常的方式運(yùn)行Spring Boot應(yīng)用,本文介紹Spring Boot的Maven插件Spring Boot Maven plugin,一起看看吧2024-01-01
Java的線程與進(jìn)程以及線程的四種創(chuàng)建方式
這篇文章主要為大家詳細(xì)介紹了Java的線程與進(jìn)程以及線程的四種創(chuàng)建方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
Java獲取Cookie里的指定值的實(shí)現(xiàn)方法
在Java中,我們經(jīng)常需要從HTTP請(qǐng)求中獲取Cookie,并從中提取特定的值,下面我們將介紹如何通過Java代碼獲取Cookie中的指定值,文章通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09

