关于动态参数使用@PathVariable的解析

 更新时间:2022年02月22日 15:52:54   作者:小大宇  
这篇文章主要介绍了关于动态参数使用@PathVariable的解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

动态参数使用@PathVariable解析

现在有如下的一条超链接

<a href="<c:url value=" 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
	}
}

此时就不会报错了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • IDEA SpringBoot:Cannot resolve configuration property配置文件问题

    IDEA SpringBoot:Cannot resolve configuration&

    这篇文章主要介绍了IDEA SpringBoot:Cannot resolve configuration property配置文件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 使用mybatis的interceptor修改执行sql以及传入参数方式

    使用mybatis的interceptor修改执行sql以及传入参数方式

    这篇文章主要介绍了使用mybatis的interceptor修改执行sql以及传入参数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java中使用BeanMap将对象转为Map详解

    Java中使用BeanMap将对象转为Map详解

    这篇文章主要介绍了Java中使用BeanMap将对象转为Map详解,BeanMap 是 Apache Commons BeanUtils 库中的一个类,BeanMap 可以将 Java 对象的属性作为键,属性值作为对应的值,存储在一个 Map 中,它提供了一种将 Java 对象转换为 Map 的方式,需要的朋友可以参考下
    2024-01-01
  • springboot整合JSR303校验功能实现代码

    springboot整合JSR303校验功能实现代码

    这篇文章主要介绍了springboot整合JSR303校验功能实现,JSR303校验方法有统一校验的需求,统一校验实现以及分组校验,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • Java实现简单密码加密功能

    Java实现简单密码加密功能

    这篇文章主要为大家详细介绍了Java实现简单密码加密功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 如何解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver问题

    如何解决java.lang.ClassNotFoundException: com.mysql.jdbc.Dr

    这篇文章主要介绍了如何解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 关于SpringBoot中controller参数校验的使用

    关于SpringBoot中controller参数校验的使用

    本文主要介绍了关于SpringBoot中controller参数校验的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • JDK8配置环境变量的bat文件的详细教程

    JDK8配置环境变量的bat文件的详细教程

    这篇文章主要介绍了JDK8配置环境变量的bat文件,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • SpringBoot整合TomCat实现本地图片服务器代码解析

    SpringBoot整合TomCat实现本地图片服务器代码解析

    这篇文章主要介绍了SpringBoot整合TomCat实现本地图片服务器代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • java基础类型源码解析之多角度讲HashMap

    java基础类型源码解析之多角度讲HashMap

    这篇文章主要给大家介绍了关于java基础类型源码解析之HashMap的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java基具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07

最新评论