Ich reiche dies nicht als Antwort ein, da es nur ein Randfall auf dem currently accepted answer ist, was ich auch benutzt habe. In meinem Fall (Jersey 1.19) /list/{taskid:.+}
würde nicht für den Rand Fall der Variablen Null Parameter funktionieren. Die Änderung der RegEx zu /list/{taskid:.*}
hat sich darum gekümmert. Siehe auch this article (scheint zutreffend zu sein).
Außerdem, auf den regulären Ausdruck zu Mächtigkeit Indikatoren *
zu wechseln (statt +
) Ich hatte auch programmatisch mit dem Fall von leeren Saiten zu behandeln, wie ich die List<PathSegment>
in ein List<String>
übersetzen würde (zu übergeben es in meinen DB-Zugang Code).
Der Grund, warum ich PathSegment
-String
bin zu übersetzen ist, dass ich nicht eine Klasse aus dem javax.ws.rs.core
Paket wollte meine Data Access Layer Code verschmutzen.
Hier ist ein komplettes Beispiel:
@Path("/listDirs/{dirs:.*}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response listDirs(@PathParam("dirs") List<PathSegment> pathSegments) {
List<String> dirs = new ArrayList<>();
for (PathSegment pathSegment: pathSegments) {
String path = pathSegment.getPath();
if ((path!=null) && (!path.trim().equals("")))
dirs.add(pathSegment.getPath());
}
List<String> valueFromDB = db.doSomeQuery(dirs);
// construct JSON response object ...
}
Danke, das ist wahrscheinlich die nächste, die ich so jetzt, dass bekommen, ich muss nur dort regexp setzen, die Zahlen übereinstimmt und schlitzt für example.com/ws/list/1 oder example.com/ws/list/1/2/3/4/5/6 – zeratul021