ZKSteffel ZKSteffel - 1 year ago 139
Java Question

Handling Multiple Query Parameters in Jersey

In the web service I'm working on, I need to implement a URI with query parameters which look like


To break it down, I need to be able to use query parameters to specify data from multiple/all stores and data for multiple/all items from those stores. So far I have been able to implement one query argument just fine in order to pull item data, but I'm lost as far as to how to implement more queries, and can't seem to find the resources I had seen before which deal with this implementation.

What I have so far in my method is along the lines of

public String methodImCalling(@DefaultValue("All") @QueryParam(value = "item") final String item)
/**Run data using item as variable**/
return someStringOfData

which works well for one item, and will return all data if I don't type the parameter in the URI. However, I am unsure how to handle any more parameters than this.


I have figured out how to use 2 different parameters by simply adding a second argument to the method like so:

public String methodImCalling(@DefaultValue("All") @QueryParam(value = "store") final String store,
@DefaultValue("All") @QueryParam(value = "item") final String item)

The question remains of how to implement multiple values of the same parameter.

Answer Source

If you change the type of your item method parameter from String to a collection such as List<String>, you should get a collection that holds all the values you are looking for.

public String methodImCalling(@DefaultValue("All") 
                              @QueryParam(value = "item") 
                              final List<String> item) {
   return "values are " + item;

The JAX-RS specification (section 3.2) says the following regarding the @QueryParam annotation:

The following types are supported:
  1. Primitive Types
  2. Types that have a constructor that accepts a single String argument.
  3. Types that have a static method named valueOf with a single String argument.
  4. List<T>, Set<T>, or SortedSet<T> where T satisfies 2 or 3 above.
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download