java - 如何为@PathParam 使用自定义类型?

标签 java web-services jersey jax-rs

我想使用非 spring bean 类对象作为 jersey web 服务类方法的参数。但它在构建时给出了缺少依赖项错误。

我的代码是:

@Component
@Path("/abcd")
public class ActorServiceEndpoint {

    @POST
    @Path("/test/{nonspringBean}")
    @Produces(MediaType.APPLICATION_XML)
    public void addActor(@PathParam("nonspringBean") MyNonSpringBeanClass nonspringBean){
}

}

最佳答案

问题是路径参数以字符串形式出现。根据规范,如果我们希望将自定义类型作为 @PathParam 注入(inject),则自定义类应该具有以下三项之一:

  1. 返回类型的 public static valueOf(String param)
  2. 返回类型的 public static fromString(String param)
  3. 或者接受字符串的公共(public)构造函数
  4. 另一个选项是实现 ParamConverter .你可以看一个例子 here .

如果您不拥有该类(它是您无法更改的第三方类),那么您唯一的选择是使用 ParamConverter/ParamConverterProvider 对。

在任何一种情况下,您都需要通过在构造函数或上述方法之一中解析字符串来相应地构造实例。这样做之后,自定义类型可以成为带有注释的方法参数。

其他参数也是如此,如@FormParam@HeaderParam@QueryParam

关于java - 如何为@PathParam 使用自定义类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29207562/

相关文章:

java - JaCoCo 0.8.4 - 错误 : Could not find or load main class –javaagent:jacocoagent. jar

java - 使用 izpack 进行校验和或签名安装

java - Hibernate 查询语法异常 : Not Mapped

Java Jersey / jackson : return dynamic JSON properties

java - 如何像数组一样迭代列表

Java比较类实例

java - GWT - 如何为 GRPC servlet 中的所有传入请求设置入口点方法

html - 为什么我的浏览器有时无法识别我的服务器 header ?

c# - 我可以将 Unity 场景公开为 Web 服务吗?

java - JAX-RS 中的 @DefaultValue 日期为 : now() and MAX