你可以在球衣上有一个可选的QueryParam吗?

时间:2015-09-02 21:18:45

标签: java jersey

使用java jersey,我的方法处理程序中有以下@ QueryParam:

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

我知道如果我这样做: http://myaddress/hello?name=something

它会进入那种方法......

我想这样打电话:

  

http://myaddress/hello?name=something

它也将采用相同的方法。有什么方法可以标记"可选" PathParam?它也适用于@FormParam吗?或者我是否需要使用不同的方法签名创建单独的方法?

3 个答案:

答案 0 :(得分:16)

在JAX-RS中,参数不是必需参数,因此如果您不提供年龄值,它将为NULL,您的方法仍将被调用。

如果不存在,您还可以使用@DefaultValue提供默认年龄值。

@PathParam参数和其他基于参数的注释@MatrixParam@HeaderParam@CookieParam@FormParam遵守与{{1}相同的规则}}。

Reference

答案 1 :(得分:9)

您应该能够在<div class="output"></div> 参数中添加@DefaultValue注释,这样如果未提供age,则会使用默认值。

age

根据Javadocs for @DefaultValue,它应该适用于所有* Param注释。

  

定义使用以下注释之一绑定的请求元数据的默认值:PathParam,QueryParam,MatrixParam,CookieParam,FormParam或HeaderParam。如果请求中不存在相应的元数据,则使用默认值。

答案 2 :(得分:2)

您始终可以将返回类型换行为可选,例如:@QueryParam("from") Optional<String> from