java - 为什么我无法指定 @DefaultValue 的类型?

标签 java web-services jax-rs

当我为我的服务指定 @DefaultValue 时,在没有提供参数的情况下调用它时,为什么它只能是字符串,而不能是任何其他类型?下面的 @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,

最佳答案

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

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

关于java - 为什么我无法指定 @DefaultValue 的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23233052/

相关文章:

java - 如何在java mysql中获取最后插入的ID作为Long

java - 如何编写接受二进制文件的 Restful 网络服务 (pdf)

java - 可以将 CA(客户端)颁发的证书与自签名证书(服务器)通信吗?

java - 找不到 MessageBodyReader

jakarta-ee - JavaEE & JAX-RS : Resource Class Should Be Declared as Singleton or Stateless?

java - JAX-RS 和 Jersey : Properly Nested JSON

java - 制作 KvmSerialized 对象来请求 SOAP 服务

java - 如果 HTML 代码没有更改,如何检查图像是否已更改?

c# - SOAP 扩展实现

java - Vowpal Wabbit 执行而不写入磁盘