Как я могу сопоставить PathParams, разделенные точкой с запятой, в Джерси?

Есть ли способ использовать этот стиль параметра:

/ 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

13
задан mjn 1 April 2011 в 14:48
поделиться