洞察了解前端三大主流框架如何影响企业跨平台小程序开发的效率与灵活性
864
2022-12-18
关于@RequestParam的使用所遇到的404问题
目录@RequestParam的使用所遇到的404问题困扰:问题所在及解决:下面是第一种方式:第二种方式:@RequestParam注解在使用过程一些注意在项目开发过程的一些教训经验记录针对上述问题的解决办法1、修改接口定义中2、Post方式改为Get方式
@RequestParam的使用所遇到的404
问题困扰:
最近在学习springmvc,但是学习到@RequestParam的使用过程中,遇到了以上的404报错问题,让我很无奈,教程的可以,为什么我的不可以!!!此时有点烦躁!!!
问题所在及解决:
经过百度之后的说法也是一堆一堆的,最后得知是jsp页面传到controller类方法的形参类型不适合,jsp页面中写的是字符串,controller类方法的形参我写成了Integer类型(毕竟id定义成了Integer类型的)
下面附上jsp页面代码图:会发现value="/items/editItems.action?id='${item.id }'"中的id为字符串有单引 号'',这是错误的写法!!!
重点是这里:正确的应该是value="/items/editItems.action?id=${item.id }"去掉单引号即可
以下附上controller类方法图:
下面是第一种方式:
要求形参名称id与jsp中通过request传过来的参数名称一致
第二种方式:
不要求形参名称items_id与jsp中通过request传过来的参数名称一致,但是需要加上声明 @RequestParam(value="id")指定request传入参数名称和形参进行绑定
@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": "/SfRYetDBervice/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方式
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~