不知道這是否正是你正在尋找,但你可以做這樣的事情。
@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可以注入,因爲它們的構造函數 只需要一個字符串。
查看docs。
最後,作爲使用@PathParam註釋注入VariableString 的替代方法,您可以將此邏輯封裝到您自己的自定義Jersey Provider中。這個提供者會或多或少地注入一個「VariableStrings」,但它可能看起來有點乾淨。不需要PathParam註釋。
Coda Hale給出了很好的overview。
優雅的解決方法;特別是有一個可重用類來解析的好主意。我會在一段時間後接受,以確認沒有直接的方式。謝謝! – necromancer
你可以做的另一件事情,或多或少是同一件事,就是將這個邏輯包裝在你自己的自定義Jersey Provider中。這個提供者會爲你注入一個「VariableStrings」對象。不需要PathParam註釋。 – esiegel
Coda Hale給出了一個很好的概述。 http://codahale.com/what-makes-jersey-interesting-injection-providers/ – esiegel