關(guān)于動態(tài)參數(shù)使用@PathVariable的解析
動態(tài)參數(shù)使用@PathVariable解析
現(xiàn)在有如下的一條超鏈接
<a href="<c:url value=" rel="external nofollow" /actions/article/readArticle/${article.id}"/> "
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?target="_blank">${article.title}</a>這條超鏈接的特點就是在URL路徑中添加了EL表達(dá)式解析出來的id值。
因此,在SpringMVC的Controller層中,需要解析它,使用@PathVariable("articleId") Long articleId 來解析。
@PathVariable是專門用來解析URL請求中的動態(tài)參數(shù)。
在Controller層的代碼如下
public static final String URL_ARTICLE_READ = "article/readArticle/{articleId}";
? ? /**
? ? ?* 去文章詳情頁面
? ? ?* 根據(jù)URL路徑中指定的文章ID號,去獲取制定文章的內(nèi)容
? ? ?*
? ? ?* @param articleId 指定的文章的ID號
? ? ?* @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會將數(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,而后臺要接收的是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";//跳轉(zhuǎn)到test.jsp
}
}

此時就不會報錯了


以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的字符型文件流FileReader和FileWriter詳細(xì)解讀
這篇文章主要介紹了Java中的字符型文件流FileReader和FileWriter詳細(xì)解讀,與字節(jié)型文件流不同,字節(jié)型文件流讀取和寫入的都是一個又一個的字節(jié),而字符型文件流操作的單位是一個又一個的字符,字符型流認(rèn)為一個字母是一個字符,而一個漢字也是一個字符,需要的朋友可以參考下2023-10-10
Mybatis配置之<environments>配置元素詳解
這篇文章主要介紹了Mybatis配置之<environments>配置元素,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-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ì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03

