[英]“Annotation type not applicable to this kind of declaration” when using @QueryParam and @DefaultValue from JAX-RS
[英]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 =?)
参数值为:
valString
: null
valInt
: 0
valBool
: false
引用有关提取请求参数的Java EE 7教程 :
如果
@DefaultValue
未与@QueryParam
一起使用,并且请求中不存在查询参数,则该值将是List
,Set
或SortedSet
的空集合;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) {
....
}
值将为null
, 0
, false
,即这些类型的非初始化变量的默认值。 如果客户端未将参数放入URL中,并且服务未指定默认值,则服务将获得的是非初始化变量的Java缺省值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.