【问题标题】:Spring MVC @RequestParam DefaultValue Not set for parameter with emptyvalue [duplicate]Spring MVC @RequestParam DefaultValue未为具有空值的参数设置[重复]
【发布时间】:2014-10-04 03:25:25
【问题描述】:

我正在调用 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

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

http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html
“当请求参数值未提供或为空时用作后备的默认值。”

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

【问题讨论】:

    标签: java spring-mvc


    【解决方案1】:

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

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

    已提供或为空

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

    【讨论】:

    • m4rtin..谢谢!我之前看过那篇文章……我认为请求者仍然没有说服力……我也一样。我认为 caseId 值是空的,所以 defaultValue 应该在控制器中可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 2019-01-18
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2014-04-17
    • 2013-06-01
    相关资源
    最近更新 更多