有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在资源的URI中使用自定义类

我有一个自定义数据类:

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);
        ...
    }
}

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


共 (1) 个答案

  1. # 1 楼答案

    docs开始:

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

    • 有一个接受单个字符串参数的构造函数
    • 有一个名为valueOf或fromString的静态方法,该方法接受单个字符串参数(例如,请参阅Integer.valueOf(String))
    • 有一个注册的ParamConverterProvider JAX-RS扩展SPI实现,该实现返回一个ParamConverter实例,该实例能够对类型进行“from string”转换

    所以,如果你提供一个构造函数Data(String),你应该没问题