返回顶部
首页 > 资讯 > 后端开发 > Python >关于@RequestParam的使用所遇到的404问题
  • 811
分享到

关于@RequestParam的使用所遇到的404问题

2024-04-02 19:04:59 811人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录@RequestParam的使用所遇到的404问题困扰:问题所在及解决:下面是第一种方式:第二种方式:@RequestParam注解在使用过程一些注意在项目开发过程的一些教训经验

@RequestParam的使用所遇到的404

问题困扰:

114028_3ZAw_3693384.png

最近在学习springMVC,但是学习到@RequestParam的使用过程中,遇到了以上的404报错问题,让我很无奈,教程的可以,为什么我的不可以!!!此时有点烦躁!!!

问题所在及解决:

经过百度之后的说法也是一堆一堆的,最后得知是jsp页面传到controller类方法的形参类型不适合,jsp页面中写的是字符串,controller类方法的形参我写成了Integer类型(毕竟id定义成了Integer类型的)

下面附上jsp页面代码图:会发现value="/items/editItems.action?id='${item.id }'"中的id为字符串有单引 号'',这是错误的写法!!!

114341_v1dZ_3693384.png

重点是这里:正确的应该是value="/items/editItems.action?id=${item.id }"去掉单引号即可

以下附上controller类方法图:

下面是第一种方式:

要求形参名称id与jsp中通过request传过来的参数名称一致

114617_szzn_3693384.png

第二种方式:

不要求形参名称items_id与jsp中通过request传过来的参数名称一致,但是需要加上声明 @RequestParam(value="id")指定request传入参数名称和形参进行绑定

114636_TlRc_3693384.png

@RequestParam注解在使用过程一些注意

在项目开发过程的一些教训经验记录

Http接口定义如下:


@RequestMapping(value="/fetchResData",method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE)
void fetchResData(
  @RequestParam(value = "id")Long id 
 ,@RequestParam(value = "start") String start
 ,@RequestParam(value = "end") String end);

请求方式为POST,Content-Type是json格式,@RequestParam的required属性值默认是true。

客户端在调用该接口,正常传入参数值,但是请求没有进入服务端设置的断点。根据跟踪的异常提示如下:

{
  "timestamp": 1560339674464,
  "status": 400,
  "error": "Bad Request",
  "exception": "org.springframework.WEB.bind.MissingServletRequestParameterException",
  "message": "Required Long parameter 'id' is not present",
  "path": "/Service/fetchResData"
}

进一步分析客户端的请求体信息,如果接口使用@RequestParam绑定基本数据类型情况下,请求的参数是接在URL后面,消息体是没有数据的。而接口定义使用的consumes = MediaType.APPLICATION_JSON_VALUE。因此无法从消息体中获取有效的参数值。从而服务端认为接口参数是必填的,而实际情况是空值。

针对上述问题的解决办法

1、修改接口定义中


consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE 

等同于http中content-type为


Content-Type=mutipart/form-data和Content-Type=application/x-www-form-urlencoded

2、Post方式改为Get方式

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

--结束END--

本文标题: 关于@RequestParam的使用所遇到的404问题

本文链接: https://lsjlt.com/news/132811.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作