Я не представляю это как ответ, поскольку это просто крайний случай принятого в настоящее время ответа , который я также использовал.В моем случае (Джерси 1.19) /list/{taskid:.+}
не будет работать для крайнего случая параметров с нулевой переменной.Изменение RegEx на /list/{taskid:.*}
позаботилось об этом.См. Также эту статью (что, по-видимому, применимо).
Более того, после изменения показателя регулярного выражения в кардинальности на *
(вместо +
) мне также пришлось работать программнов случае пустых строк, как я бы перевел List<PathSegment>
в List<String>
(чтобы передать его в мой код доступа к БД).
Причина, по которой я перевожу с PathSegment
на String
является то, что я не хотел, чтобы класс из пакета javax.ws.rs.core
загрязнил мой код уровня доступа к данным.
Вот полный пример:
@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 ...
}