例如,具有以下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 =?)
答案 0 :(得分:61)
参数值为:
valString
:null
valInt
:0
valBool
:false
引用关于Java EE 7 tutorial的extracting request parameters:
如果
@DefaultValue
未与@QueryParam
一起使用,并且 查询参数不在请求中,值为List
,Set
或SortedSet
的空集合;null
其他对象类型;和原始类型的默认值。
基元类型的默认值在Oracle的Java Tutorials中描述:
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) {
....
}
答案 1 :(得分:2)
值为null
,0
,false
,即这些类型的非初始化变量的默认值。如果客户端没有将参数放在URL中,并且服务没有指定默认值,那么服务将获得的是非初始化变量的Java默认值。