繁体   English   中英

未指定@DefaultValue时@QueryParam的默认值是什么?

[英]What are the default values for @QueryParam when @DefaultValue is not specified?

例如,具有以下Java休息定义:

@GET
@Path("/something")
public String somthing(
    @QueryParam("valString") String valString,
    @QueryParam("valInt") int valInt,
    @QueryParam("valBool") boolean valBool
) {
  ...
}

并调用:

curl -X GET 127.0.0.1/something

如果未在调用中指定,参数值将是什么? (valString =?,valInt =?,valBool =?)

简短的回答

参数值为:

  • valStringnull
  • valInt0
  • valBoolfalse

更长的答案

引用有关提取请求参数Java EE 7教程

如果@DefaultValue未与@QueryParam一起使用,并且请求中不存在查询参数,则该值将是ListSetSortedSet的空集合; null为其他对象类型; 和原始类型的默认值。

Oracle的Java教程中描述了基本类型的默认值:

 Primitive       Default Value
-------------------------------
 byte            0
 short           0
 int             0
 long            0L
 float           0.0f
 double          0.0d
 char            '\u0000'
 boolean         false

如您所知,可以使用@DefaultValue批注更改此行为,如下所示:

@GET
@Path("/foo")
public String myMethod(@DefaultValue("foo") @QueryParam("valString") String valString,
                       @DefaultValue("1") @QueryParam("valInt") int valInt,
                       @DefaultValue("true") @QueryParam("valBool") boolean valBool) {
    ....
}

值将为null0false ,即这些类型的非初始化变量的默认值。 如果客户端未将参数放入URL中,并且服务未指定默认值,则服务将获得的是非初始化变量的Java缺省值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM