4

@PathParamJAX-RS/Jersey 允许使用注释将 URL 路径元素转换为 Java 方法参数。

有没有办法将未知数量的路径元素转换为可变参数 Java 方法的参数? IE。/foo/bar/x/y/z应该去方法:foo(@PathParam(...) String [] params) { ... }where params[0]is x, params[1]isyparams[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("/");
   }
}

请注意,我没有检查此代码,因为它只是为了给您一个想法。这是可行的,因为变量字符串可以被注入,因为它们的构造函数只接受一个字符串。

查看文档

最后,作为使用 @PathParam 注释注入 VariableString 的替代方法,您可以将此逻辑包装到您自己的自定义 Jersey Provider 中。该提供程序将注入一个“VariableStrings”或多或少与上面相同的方式,但它可能看起来更干净一些。不需要 PathParam 注释。

Coda Hale 给出了一个很好的概述

于 2012-06-07T06:47:18.507 回答