Java 向JAX-RS web服务发送通用列表参数

Java 向JAX-RS web服务发送通用列表参数,java,jax-rs,Java,Jax Rs,如何向JAX-RS服务发送通用列表参数 以下是方法签名: @POST @路径(“findcustomers”) @产生(MediaType.APPLICATION_JSON) @使用(MediaType.MULTIPART\u FORM\u数据) public void FindCustomers(@PathParam(“branchId”)long branchId, @PathParam(“搜索选项”)列表(搜索选项) 抛出异常{ ... } SearchOption是一个简单的Java类

如何向JAX-RS服务发送通用列表参数

以下是方法签名:

@POST
@路径(“findcustomers”)
@产生(MediaType.APPLICATION_JSON)
@使用(MediaType.MULTIPART\u FORM\u数据)
public void FindCustomers(@PathParam(“branchId”)long branchId,
@PathParam(“搜索选项”)列表(搜索选项)
抛出异常{
...
}
SearchOption
是一个简单的Java类,由基本类型组成:

类搜索选项{
int channelId;
int locationId;
int targetStatus;
}
上面的代码引发了一个异常,声明如下:

未找到类型为[put method signature here]的参数的注入源


好的,经过长期痛苦的研究,我找到了解决办法

为了能够在服务方法中接受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>

org.glassfish.jersey.containers
jersey容器servlet
2.22.1
org.glassfish.jersey.media
泽西媒体公司
2.23.1

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

为什么不在请求负载中发送它,或者将搜索条件作为查询参数发送?顺便说一句,请确保使用而不是。@CássioMazzochiMolin谢谢。有多个选项可发送到服务器,所有选项都是复杂对象。是否可以将它们全部作为查询参数发送?什么类型的复杂对象?您的
SearchOption
类需要遵循允许作为
@PathParam
类型的规则。请看图表中的要点。基本上,一旦使用其中一个规则,您就需要自己从字符串构造类型。JAX-RS不知道如何从字符串创建
SearchOptions
。但它提供了一些选项,让您可以选择如何告诉它如何创建它,方法是遵循这些规则之一