restful query pathparam multiple jax example java rest javax.ws.rs queryparam

java - pathparam - ¿Cuáles son los valores predeterminados para @QueryParam cuando no se especifica @DefaultValue?



queryparam java (2)

Respuesta corta

Los valores de los parámetros serán:

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

Respuesta un poco mas larga

Citando el tutorial de Java EE 7 sobre la extracción de parámetros de solicitud :

Si @DefaultValue no se usa junto con @QueryParam , y el parámetro de consulta no está presente en la solicitud, el valor será una colección vacía para List , Set o SortedSet ; null para otros tipos de objetos; y el valor por defecto para los tipos primitivos.

Los valores predeterminados para los tipos primitivos se describen en los https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html de Oracle:

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

Como ya sabe, este comportamiento se puede cambiar usando la anotación @DefaultValue siguiente manera:

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

Por ejemplo, teniendo la siguiente definición de resto de Java:

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

Y la invocación:

curl -X GET 127.0.0.1/something

¿Cuáles serán los valores de los parámetros si no se especifican en la invocación? (valString = ?, valInt = ?, valBool =?)


los valores serán null , 0 , false , es decir, los valores predeterminados para las variables no inicializadas de esos tipos. Si el cliente no coloca los parámetros en la URL y el servicio no especifica los valores predeterminados, lo que el servicio obtendrá son los valores predeterminados de Java para las variables no inicializadas.