jersey - 在资源URI

时间:2015-07-09 09:27:31

标签: java jersey jersey-2.0

我有一个自定义数据类:

public static class Data {
    ...
}

我想在Jersey中的资源的URI中使用此类。例如:

@Path("test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class ResourceTest {
    @GET
    @Path("/data-{data}")
    public Response get(@PathParam("data") final Data data) {
        ...
    }
}

这可能吗?我想我需要注入某种转换器,它将Data的文本表示转换为Data实例。我一直在查看文档,但到目前为止还没有找到有用的东西。

当然,我可以将其更改为:

@Path("test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class ResourceTest {
    @GET
    @Path("/data-{data}")
    public Response get(@PathParam("data") final String input) {
        final Data data = convert(input);
        ...
    }
}

但我宁愿在其他地方进行转换/自动转换。资源。

1 个答案:

答案 0 :(得分:0)

来自docs

带注释的参数,字段或属性的类型必须:

  • ...
  • 拥有一个接受单个String参数的构造函数。
  • 有一个名为valueOf或fromString的静态方法接受单个String参数(例如,参见Integer.valueOf(String))。
  • 有一个ParamConverterProvider JAX-RS扩展SPI的注册实现,它返回一个ParamConverter实例,该实例能够从字符串""转换类型。

因此,如果您提供构造函数Data(String),那么您应该没问题。