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 に答える