4

JAX-RS/Jersey では、@PathParam注釈を使用して URL パス要素を Java メソッド引数に変換できます。

不明な数のパス要素を vararg Java メソッドの引数に変換する方法はありますか? 私はe。/foo/bar/x/y/zメソッドに移動する必要があります: foo(@PathParam(...) String [] params) { ... }where params[0]is xparams[1]isyおよびparams[2]isz

これをJersey/JAX-RSまたは便利な方法で行うことはできますか?

4

1 に答える 1

4

これがまさにあなたが探していたものかどうかはわかりませんが、このようなことができます。

@Path("/foo/bar/{other: .*}
public Response foo(@PathParam("other") VariableStrings vstrings) {
   String[] splitPath = vstrings.getSplitPath();
   ...
}

VariableStrings は、ユーザーが定義するクラスです。

public class VariableStrings {

   private String[] splitPath;

   public VariableStrings(String unparsedPath) {
     splitPath = unparsedPath.split("/");
   }
}

アイデアを提供することのみを目的としているため、このコードはチェックしていないことに注意してください。これが機能するのは、VariableStrings が String のみを受け取るコンストラクターのために注入できるためです。

ドキュメントをチェックしてください。

最後に、 @PathParam アノテーションを使用して VariableString を注入する代わりに、このロジックを独自のカスタム Jersey プロバイダーにラップすることもできます。このプロバイダーは、ほぼ上記と同じ方法で「VariableStrings」を挿入しますが、少しすっきりしているように見えるかもしれません。PathParam アノテーションは必要ありません。

Coda Hale が概要を説明しています。

于 2012-06-07T06:47:18.507 に答える