java - Spring MVC @RequestParam DefaultValue 未为具有空值的参数设置

标签 java spring-mvc

<分区>

我正在调用 URL 并发送参数如下 -

 http://india.webinc.in:8080/caseManagement/caseView?lock=false&caseId= 

It is landed into Spring MVC's below controller method -

@RequestMapping(value = "/caseView", method = RequestMethod.GET)
public String caseView(
final HttpServletRequest request,   
@RequestParam(value = "caseId", defaultValue = "-1") final Integer caseId
){
System.out.println("request.getparameter(caseId)::" + request.getParameter("caseId"));
System.out.println("@RequestParam caseId::" + caseId);
if (caseId != -1) {
//do something
} else {
//do something else
} 
} 

并在控制台中生成如下结果 -

request.getparameter(caseId)::
@RequestParam caseId::null
java.lang.NullPointerException

现在根据文档默认值可以用作请求参数值为空时的回退,那么空 caseId 未设置为 -1 的原因可能是什么?

http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html
"The default value to use as a fallback when the request parameter value is not provided or empty."

对于解决方案,我已经从 url 中排除了这个 caseId 参数,但是我很想知道 RequestParam 的默认行为。

最佳答案

Now as per doc default value can be used as a fallback when request parameter value is empty , then what could be the reason empty caseId not set to -1 ?

似乎只要 caseId 参数出现在您请求的查询参数中,它就被认为是提供值“”,因此结果您遇到。

provided or empty

部分 Spring 文档可能令人困惑,但这是相同行为的另一个示例:Is it possible to have empty RequestParam values use the defaultValue?

关于java - Spring MVC @RequestParam DefaultValue 未为具有空值的参数设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25240925/

相关文章:

java - 无法解包到请求的类型 Javax.Sql.Datasource - Spring hibernate java 配置

Spring Boot : Prevent decoding for @RequestParam

java - InternalViewResolver 在 Spring 中不工作

java - 在验证函数中添加全局错误

java - 将 Android 屏幕一分为二

java - 如何在运行时更改我的 TimerTask 的执行周期?我

java - 在 Spring 动态安排 quartz cron 作业?

java - 在 docker 容器中部署简单的独立 spring mvc 应用程序

java - db.query 无法使用整数字段进行选择

java - "while running the android game app"在 logcat 中给出警告信息