@PathVariable和@RequestParam传参为空问题及解决

目录
  • @PathVariable和@RequestParam传参为空
    • 小结一下
  • 使用@pathvariable与@requestparam碰到的问题
    • 1.@pathvariable
    • 2.@requestparam

@PathVariable和@RequestParam传参为空

@RestController
public class UserController {
    @GetMapping(value = {"/xie/{name}","/xie"})
    public String xie(@PathVariable(value = "name",required=false) String name){
        return "my name is:"+name;
    }

    @GetMapping("/xie1")
    public String xie1(@RequestParam(value = "name",required = false) String name){
        return "my name is:"+name;
    }

}

访问地址:

http://localhost:8080/xie/qiao

http://localhost:8080/xie

http://localhost:8080/xie1

http://localhost:8080/xie1?name=qiao

小结一下

required = false属性设置前端可以不传数据,当在使用@RequestParam时直接写上,不需要改变地址映射,当使用@PathVariable时,需要在地址映射上面写入多个地址映射。而且必须写required = false,不然报500

使用@pathvariable与@requestparam碰到的问题

1.@pathvariable

可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {x} 占位符可以通过@PathVariable("x") 绑定到操作方法的入参中。

@GetMapping("/test/{id}")
public String test(@PathVariable("id") String id){
    System.out.println("test:"+id);
    return SUCCESS;
}

可以看出使用@pathvariable注解它直接从url中取参,但是如果参数是中文就会出现乱码情况,这时应该使用@requestparam注解

2.@requestparam

它是直接从请求中取参,它是直接拼接在url后面(demo?name=张三)

@GetMapping("/demo")
public String test(@requestparam(value="name") String name){
     System.out.println("test:"+name);
     return SUCCESS;
}

注:如果参数不必须传入的话,我们从源码中可以看出两者required默认为true,如图:

所以我们可以这样写,只写一个例子

@GetMapping("/demo")
public String test(@requestparam(value="name", required = false) String name){
     System.out.println("test:"+name);
     return SUCCESS;
}

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

(0)

相关推荐

  • 浅谈@RequestParam 参数是否必须传的问题

    一.源码展示 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RequestParam { @AliasFor("name") String value() default ""; @AliasFor("value") String name() default ""; boolea

  • 基于params、@PathVariabl和@RequestParam的用法与区别说明

    方法参数相关属性params.@PathVariabl和@RequestParam的使用 [1]params params:指定request中必须包含某些参数值是,才让该方法处理. @RequestMapping(value = "testParamsAndHeaders", params = { "username","age!=10" }) public String testParamsAndHeaders() { System.out.

  • 使用@pathvariable与@requestparam碰到的一些问题及解决

    目录 @pathvariable与@requestparam碰到的一些问题 一.@pathvariable 二.@requestparam @PathVariable和@RequestParam的使用说明 value的uri值为以下三类 拓展 @pathvariable与@requestparam碰到的一些问题 一.@pathvariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {x} 占位符可以通过@PathVariable("x") 绑定到操作方

  • 聊聊@RequestParam,@PathParam,@PathVariable等注解的区别

    @RequestParam 和 @PathVariable 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @PathVariable 是从一个URI模板里面来填充 @RequestParam 看下面一段代码: http://localhost:8080/springmvc/hello/101?param1=10&param2=20 根据上面的这个URL,你可以用这样的方式来进行获取 public Strin

  • Spring Boot中@RequestParam参数的5种情况说明

    目录 Spring Boot中@RequestParam参数的5种情况 实例如下: Spring Boot注解:@RequestParam详解 1.value:参数名字,即入参的请求参数名字 ​2.required:该参数是否为必传项. ​3.defaultValue:参数的默认值 Spring Boot中@RequestParam参数的5种情况 实例如下: // 可带参数可不带参数,方法都能执行 @RequestMapping("/list") public String test1

  • @PathVariable和@RequestParam传参为空问题及解决

    目录 @PathVariable和@RequestParam传参为空 小结一下 使用@pathvariable与@requestparam碰到的问题 1.@pathvariable 2.@requestparam @PathVariable和@RequestParam传参为空 @RestController public class UserController { @GetMapping(value = {"/xie/{name}","/xie"}) public

  • vue router 传参获取不到的解决方式

    在当前路由中有一个toArticle方法可以跳转到article页面 methods:{ toArticle:function(index) { this.$router.push({path:'/article',params:this.blogList[index]}); } } 在article中接受不到params mounted(){ console.log(this.$route.params) //这里输出undifined } 导致这样的原因是因为params需要通过name来获

  • SpringCloud:feign对象传参和普通传参及遇到的坑解决

    目录 feign对象传参和普通传参及遇到的坑 对象传参 普通传参 遇到的坑-1 遇到的坑-2 feign传递复杂参数对象需要注意的地方 传递复杂参数对象需要用Post 在传递的过程中 feign对象传参和普通传参及遇到的坑 对象传参 使用@RequestBody来指定传参对象 @RequestMapping(value = "/v2/matterCode/genCode", method = RequestMethod.POST)     ResultResponse<Strin

  • Mybatis order by 动态传参出现的问题及解决方法

    问题由来 一个简单的需求,要求把和当前用户相关的数据置顶展示. 这里,我用了一个简单的用户表来复现这个需求. 很简单,查询语句后面加上:order by t.login_name='wulaoer' desc 就行了. 如下所示,吴老二就到顶了. 那Mybatis脚本怎么写呢? 就这么写

  • vue路由传参页面刷新参数丢失问题解决方案

    最近项目中涉及到跨页面传参数和后台进行数据交互,看到需求之后第一反应就是用路由传参来解决:Vue中给我们提供了三种路由传参方式,下面我们一个一个的来看一下: 方法一:params传参: this.$router.push({ name:"admin", //这里的params是一个对象,id是属性名,item.id是值(可以从当前组件或者Vue实例上直接取) params:{id:item.id} }) //这个组件对应的路由配置 { //组件路径 path: '/admin', //

  • vue路由对不同界面进行传参及跳转的总结

    最近在做一个公众号的商城项目,主要用的VUE+MUI,其实今天这个点对于有过项目经验的前端工作者来说是最基础的,但也是必须要掌握的,今天小编主要是记录下传参和跳转的一些总结(仅供参考). 首先我们先上代码吧! <router-link :to="{path:'/editaddress',query:{ id:item.id }}"> <div class="top_left_center"> <img src="/static

  • vue上传文件formData入参为空,接口请求500的解决

    目录 1.首先封装axios请求 2.vue文件点击上传按钮 接下来贴出解决的方案 long long long time no see,最近遇到个奇葩的问题来记录下,不知道有没有小伙伴和我一样崩溃过. 写了三年代码,上传这么简单的功能.第一次遇到前端入参fromData请求接口报500的问题,百度了好多资料尝试也没有解决.后台一直说我前端的问题,于是debugger一步一步查. 下面来看看报错代码的流程,用你们的丰富经验和火眼金睛帮忙看下到底错在哪里了?! 本项目用的是vue-cli3脚手架搭

  • spring boot前后端传参的实现

    获取传参 @PathVariable注解主要用来获取URL参数.即这种风格的 URL:http://localhost:8080/user/{id} @GetMapping("/user/{id}") public String testPathVariable(@PathVariable Integer id) { System.out.println("获取到的id为:" + id); return "success"; } 对于多个参数的获

  • SpringBoot多种场景传参模式

    目录 web技术 多种传参方式 传统参数传递 复杂对象映射 数组和集合类型参数 Restful风格传参 web技术 我们知道常见的web技术也就是网站开发,分为静态网站,和动态网站,动态网站技术常见的有三种,分别是 jsp java web,asp c# web,php web但是它们对应请求request,响应response 都是一样的我们用java web开发动态网站用的mvc框架就是,springmvc,当然我们现在用的是springboot 它只是对spirng全家桶的一个整合框架,他

随机推荐