Есть ли способ использовать этот стиль параметра:
/ products / 123; 456; 789
в JAX-RS с Джерси? Если я использую PathParam, возвращается только первый параметр в списке. Я попытался избежать точки с запятой, но затем Джерси вернул только «123; 456; 789» в качестве значения первой записи списка параметров
. Я объявил метод GET как
public List getClichedMessage(@PathParam("ids") List idList)
Обновление: я имею в виду Джерси руководство пользователя для Джерси 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 idList) {
return "size=" + idList.size();
}
}
Тестовый URL с экранированной точкой с запятой: http: // localhost: 8080 / resources / test / 1% 3B2% 3B3
Обновление: журнал изменений для Джерси 1.3 включает следующую информацию:
Исправленная проблема 540
http://java.net/jira/browse/JERSEY-540 Параметризованные типы List / Set / SortedSet поддерживаются для параметры, например @QueryParam ("d") Список>, если есть StringReaderProvider зарегистрированный, который поддерживает тип Список.
Я проверю StringReaderProvider на основе этого сообщения http://comments.gmane.org/gmane.comp.java.jersey.user/7545