如何将通用列表参数发送到JAX-RS服务?

这是方法签名:

@POST
@Path("findcustomers")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void FindCustomers(@PathParam("branchId") long branchId,
                          @PathParam("searchOptions") List<SearchOption> searchOptions)
                          throws Exception {
    ...
}


SearchOption是由原始类型组成的简单Java类:

class SearchOption {
    int channelId;
    int locationId;
    int targetStatus;
}


上面的代码引发了一个异常,表明:


  找不到类型为参数的注入源[在此处放置方法签名]

最佳答案

好的,经过长期艰苦的研究,我找到了解决方案。

为了能够在服务方法中接受POJO,您需要向POJO添加@XmlRootElement属性,在类中编写一个无参数的构造函数,并为该字段提供getter / setter方法。

我一直在使用Maven,因此这里是pom.xml中所需的最低要求:

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.22.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.23.1</version>
</dependency>


现在,您可以在api方法中发送和接收POJO对象。

09-28 06:12