我正在调用URL并发送参数,如下所示 -
http://india.webinc.in:8080/caseManagement/caseView?lock=false&caseId=
它进入了Spring MVC的控制器方法 -
@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
现在根据doc的默认值可以在请求参数值为空时用作后备,那么可能是什么原因可能是空caseId未设置为-1?
http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html
“当未提供请求参数值或为空时,用作后备的默认值。”
对于解决方案,我已经从url中排除了这个caseId参数,但我很想知道RequestParam的defalut行为。
答案 0 :(得分:0)
现在根据doc的默认值可以在请求参数值为空时用作后备,那么可能是什么原因可能是空caseId未设置为-1?
似乎只要请求的查询参数中存在caseId
param,就会将提供视为""的值,因此你遇到的结果。
提供或清空
Spring文档的一部分可能会令人困惑,但这是另一个相同行为的示例:Is it possible to have empty RequestParam values use the defaultValue?