为什么我不能指定@DefaultValue的类型?

时间:2014-04-23 01:09:59

标签: java web-services jax-rs

当我在没有提供参数的情况下调用服务时为我的服务指定@DefaultValue时,为什么它只能是String,而不是任何其他类型?下面的@DefaultValue(0)抛出一个错误“无法从int转换为String” - 如果我希望默认值是另一种类型怎么办?

@POST
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("/createAccount")
public BankActivity createAccount(
        @QueryParam("ownerId") @DefaultValue(0) int ownerID,
        @QueryParam("accountPin") @DefaultValue("1234") String pin,

1 个答案:

答案 0 :(得分:1)

@DefaultValue表示表单参数,查询参数,cookie和其他一些内容的默认值,如javadoc中所述。这些不同的参数和值作为请求的一部分发送。 http服务器接收它们作为字符串,你的jax-rs容器解析它们并适当地转换它们。 @DefaultValue将值作为字符串提供,让容器将其转换为提供的值。

因此,只需提供int值的字符串表示形式,容器将进行正确的转换