Джерси читает только первый @QueryParam из параметров @BeanParam

У меня есть этот ресурс Джерси POST:

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response blablabla(InputStream inputStream, 
@BeanParam ImportParams importParams) throws IOException, JAXBException, SAXException {

Вот класс ImportParams:

public class ImportParams {
    @QueryParam(value = "importType")
    public ImportType importType = ImportType.MERGE;

    @ApiParam("Force stop point type for all stop points in file. Useful if no modality defined in the netex file.")
    @QueryParam(value = "forceStopType")
    public StopTypeEnumeration forceStopType;

}

Когда я использую curl для публикации на ресурсе, jersey читает только первый параметр запроса, который я указываю после вопросительного знака в URL-адресе:

curl -XPOST -H"Content-Type: application/xml" -H"authorization: bearer $TOKEN" -d@$3  http://localhost:8585/services/stop_places/netex?forceStopType=TRAM_STATION&importType=MERGE

==> forceStopType has the right value, and importType is null

curl -XPOST -H"Content-Type: application/xml" -H"authorization: bearer $TOKEN" -d@$3  http://localhost:8585/services/stop_places/netex?importType=MERGE&forceStopType=TRAM_STATION

==> importType has the right value and forceStopType is null

Я использовал @BeanParam много раз раньше, и раньше он работал, поэтому я должен упустить что-то очевидное.... Спасибо за вашу помощь.


person Mat    schedule 08.12.2017    source источник


Ответы (1)


Ха-ха узнал - тупой я. При cURLing пришлось заключать URL-адрес в двойные кавычки:

curl -XPOST -H"Content-Type: application/xml" -H"authorization: bearer $TOKEN" -d@$3  "http://localhost:8585/services/stop_places/netex?forceStopType=TRAM_STATION&importType=MERGE"
person Mat    schedule 08.12.2017