球衣 - 在资源的 URI 中使用自定义 class
jersey - use custom class in URI of resource
我有一个自定义数据class:
public static class Data {
...
}
我想在泽西岛资源的 URI 中使用这个 class。例如:
@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);
...
}
}
但我宁愿进行转换 elsewhere/automagically wrt。资源。
来自docs:
注释参数、字段或 属性 的类型必须是:
- ...
- 有一个接受单个字符串参数的构造函数。
- 有一个名为 valueOf 或 fromString 的静态方法,它接受单个字符串参数(例如,参见 Integer.valueOf(String))。
- 拥有 ParamConverterProvider JAX-RS 扩展 SPI 的注册实现,returns 一个 ParamConverter 实例能够 "from string" 类型转换。
所以如果你提供一个构造函数Data(String)
你应该没问题。
我有一个自定义数据class:
public static class Data {
...
}
我想在泽西岛资源的 URI 中使用这个 class。例如:
@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);
...
}
}
但我宁愿进行转换 elsewhere/automagically wrt。资源。
来自docs:
注释参数、字段或 属性 的类型必须是:
- ...
- 有一个接受单个字符串参数的构造函数。
- 有一个名为 valueOf 或 fromString 的静态方法,它接受单个字符串参数(例如,参见 Integer.valueOf(String))。
- 拥有 ParamConverterProvider JAX-RS 扩展 SPI 的注册实现,returns 一个 ParamConverter 实例能够 "from string" 类型转换。
所以如果你提供一个构造函数Data(String)
你应该没问题。