MyClass为泽西资源方法中的@PathParam

时间:2013-03-14 15:31:49

标签: java rest jersey

在我的泽西岛资源中,我有:

@GET
@Path("/{dataType}/{dataSet}")
public Response search(
        @PathParam("dataType") String dataType,
        @PathParam("dataSet") String dataSet){
    ...
}

我想使用自己的类而不是字符串:

@GET
@Path("/{dataType}/{dataSet}")
public Response search(
        @PathParam("dataType") DataType dataType,
        @PathParam("dataSet") DataSet dataSet){
    ...
}

但是DataSet依赖于DataType(DataSet在其构造函数中使用DataType)。有没有办法用泽西岛做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用静态fromString()方法使用Jersey的内置转换(请参阅Jersey documentation),或使用自定义提供程序来处理路径段。对于后者,你需要一个这样的类:

public class MyProvider extends PerRequestTypeInjectableProvider<Context, DataType> {
    @Context UriInfo uriInfo;

    public Injectable<DataType> getInjectable(ComponentContext componentCtx, Context ctx) {
        uri.getPathSegments();
        ...
    }
}