Есть ли способ использовать этот стиль параметра:
/продукты/123; 456; 789
в JAX-RS с Джерси? Если я использую PathParam, возвращается только первый параметр в списке. Я попытался сбежать с точки с запятой, но затем Джерси возвращает только "123; 456; 789" в качестве значения первой записи списка параметров
Я объявил метод GET как
public List<Product> getClichedMessage(@PathParam("ids") List<String> idList)
Обновление: я имею в виду руководство пользователя Джерси для Jersey 1.1.5:
В общем, тип Java метода параметр может (...) 4) быть списком, Set или SortedSet, где T удовлетворяет 2 или 3 выше. Результирующий коллекция доступна только для чтения. (...) Иногда параметры могут содержать больше чем одно значение для одного и того же имени. Если в этом случае типы в 4) могут для получения всех значений.
Обновление: вот мой тестовый код:
package de.betabeans.resources;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
@Path("/test")
public class TestResource {
@GET
@Path("/{ids}")
@Produces({"text/plain"})
public String getClichedMessage(@PathParam("ids") List<String> idList) {
return "size=" + idList.size();
}
}
Тестовый URL с точкой с запятой: http://localhost:8080/resources/test/1%3B2%3B3
Обновление: changelog для Jersey 1.3 включает эту информацию:
Исправлена проблема 540
http://java.net/jira/browse/JERSEY-540Параметризированные типы Список /Set/SortedSet поддерживаются для параметры, например @QueryParam ( "d" ) Список > , если есть StringReaderProvider зарегистрированный, который поддерживает тип Список.
Я проведу StringReaderProvider на основе этого сообщения http://comments.gmane.org/gmane.comp.java.jersey.user/7545