たとえば、次のJava rest定義:
@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デフォルト値です。