web-dev-qa-db-fra.com

Quelles sont les valeurs par défaut pour @QueryParam lorsque @DefaultValue n'est pas spécifié?

Par exemple, ayant la définition Java rest suivante:

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

Et invocation:

curl -X GET 127.0.0.1/something

Quelles seront les valeurs des paramètres s'ils ne sont pas spécifiés dans l'invocation? (ValString =?, ValInt = ?, valBool =?)

28
AlikElzin-kilaka

Réponse courte

Les valeurs du paramètre seront:

  • valString: null
  • valInt: 0
  • valBool: false

Réponse un peu plus longue

Citant le tutoriel Java EE 7 à propos de extraction des paramètres de requête :

Si @DefaultValue n'est pas utilisé avec @QueryParam, et le paramètre de requête n’est pas présent dans la demande, la valeur sera une collection vide pour List, Set ou SortedSet; null pour les autres types d'objet; et la valeur par défaut pour les types primitifs.

Les valeurs par défaut des types primitifs sont décrites dans le tutoriels Java d’Oracle:

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

Comme vous le savez déjà, ce comportement peut être modifié en utilisant le @DefaultValue annotation comme suit:

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

les valeurs seront null, 0, false, c’est-à-dire les valeurs par défaut pour les variables non initialisées de ces types. Si le client ne met pas les paramètres dans l'URL et que le service ne spécifie pas de valeurs par défaut, le service obtiendra le Java par défaut pour les variables non initialisées.

2
francesco foresti