2015-09-02 5 views
2

Использование джерси Java, У меня есть следующие @ QueryParam у меня в обработчике метода:У вас есть дополнительный QueryParam в майке?

@Path("/hello") 
handleTestRequest(@QueryParam String name, @QueryParam Integer age) 

Я знаю, что если я делаю: http://myaddress/hello?name=something

Он будет идти в этот метод ....

Я хочу сделать так, что я могу назвать:

http://myaddress/hello?name=something

И он также войдет в этот же метод. Есть ли способ указать флаг «необязательный» PathParam? Он также работает с @FormParam? Или мне нужно создать отдельный метод с другой подписи метода?

ответ

8

В параметрах JAX-RS не обязательно, поэтому, если вы не указали возрастное значение, оно будет NULL, и ваш метод все равно будет вызываться.

Вы также можете использовать @DefaultValue, чтобы указать возрастное значение по умолчанию, когда оно отсутствует.

Параметр @PathParam и другие аннотации параметров на основе, @MatrixParam, @HeaderParam, @CookieParam и @FormParam подчиняются тем же правилам, что и @QueryParam.

Reference

+2

Looks как джерси 2,23 возвращает 404 по умолчанию в случае queryParameter не передаются. Так разве это не соответствует спецификации? – nikel

+0

^Я тоже это вижу. – SuperCow

7

Вы должны иметь возможность добавить аннотацию @DefaultValue параметра age, так что если age не прилагается, будет использоваться значение по умолчанию.

@Path("/hello") 
handleTestRequest(
    @QueryParam("name") String name, 
    @DefaultValue("-1") @QueryParam("age") Integer age) 

Согласно Javadocs for @DefaultValue, она должна работать на всех * Param аннотации.

Определяет значение по умолчанию для запроса мета-данных, который связан с использованием одной из следующих аннотаций: PathParam, QueryParam, MatrixParam, CookieParam, FormParam или HeaderParam. Значение по умолчанию используется, если соответствующие метаданные отсутствуют в запросе.

0

Вы всегда можете обернуть тип возвращаемого значения в необязательном, например: @QueryParam("from") Optional<String> from

Смежные вопросы