博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring3.2.3 绑定参数bug
阅读量:6897 次
发布时间:2019-06-27

本文共 1696 字,大约阅读时间需要 5 分钟。

hot3.png

今天早上看到一个问题:

 

@Controllerpublic class ExampleController {    @RequestMapping("/index")    public String index(Long id) {        System.out.println(id);        return "index";    }}

  使用spring3.2.3时,在浏览器输入:= 会报如下错误:

 

写道
HTTP ERROR 400
Problem accessing /es-web/monitor. Reason:
Required Long parameter 'userId' is not present
Powered by Jetty://

而spring3.2.3之前的版本是没有问题的。

 

spring3.2.3做了点小改变:

在其org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver的resolveArgument方法中:

Object arg = resolveName(namedValueInfo.name, parameter, webRequest);		if (arg == null) {			if (namedValueInfo.defaultValue != null) {				arg = resolveDefaultValue(namedValueInfo.defaultValue);			}			else if (namedValueInfo.required) {				handleMissingValue(namedValueInfo.name, parameter);			}			arg = handleNullValue(namedValueInfo.name, arg, paramType);		}		else if ("".equals(arg) && (namedValueInfo.defaultValue != null)) {			arg = resolveDefaultValue(namedValueInfo.defaultValue);		}		boolean emptyArgValue = "".equals(arg);		if (binderFactory != null) {			WebDataBinder binder = binderFactory.createBinder(webRequest, null, namedValueInfo.name);			arg = binder.convertIfNecessary(arg, paramType, parameter);		}		if (emptyArgValue && (arg == null)) {			handleMissingValue(namedValueInfo.name, parameter);		}		handleResolvedValue(arg, namedValueInfo.name, parameter, mavContainer, webRequest);		return arg;

多添加了如下代码来处理null的情况,而handleMissingValue默认是抛异常的:

if (emptyArgValue && (arg == null)) {   handleMissingValue(namedValueInfo.name, parameter);}

但是如果之前版本就不处理此情况。

 

所以综上,不管你是不是有如下代码参数都是必须的。。。

@RequestParam(value="username", required=false)  

 

这是个bug。。提交了其jira

 

转载于:https://my.oschina.net/qjx1208/blog/200936

你可能感兴趣的文章
CSS几个竖直与水平居中盒子模型
查看>>
希望早几年知道的5个Unix命令
查看>>
C# 控件不刷新问题
查看>>
Structs+Spring+Hibernate快速入门
查看>>
[Erlang 0083] All about Erlang Shell
查看>>
EMF介绍系列(一、EMF与MDA)
查看>>
PyQt4 py2exe 打包 HardwareManager
查看>>
免费Gif图片录制工具
查看>>
Java 使用pipeline对redis进行批量读写
查看>>
【spring boot】配置文件 application.properties 属性解析
查看>>
Magicodes.WeiChat——使用AntiXssAttribute阻止XSS(跨站脚本攻击)攻击
查看>>
java多线程之:线程对象一些api
查看>>
丁夏畦同志去世
查看>>
技术方案之外你还能做什么
查看>>
是什么让C#成为最值得学习的编程语言
查看>>
不同机具的通用的第二代居民身份证读写
查看>>
【Cocos2d-x】Cocos2d-X网络编程-HttpRequest/HttpClient/HttpResponse
查看>>
用SQL语句,删除掉重复项只保留一条
查看>>
阿里云CDN直播架构与双11晚会直播实战
查看>>
辗转相除法_欧几里得算法_java的实现(求最大公约数)
查看>>