0

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

@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)。有没有办法用泽西岛做到这一点?

4

1 回答 1

1

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

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

    public Injectable<DataType> getInjectable(ComponentContext componentCtx, Context ctx) {
        uri.getPathSegments();
        ...
    }
}
于 2013-03-14T15:54:36.203 回答