java - 将通用列表参数发送到 JAX-RS Web 服务

标签 java jax-rs

如何将通用列表参数发送到 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;
}

上面的代码引发了一个异常,声明如下:

No injection source found for a parameter of type [put method signature here]

最佳答案

好的,经过漫长而痛苦的研究,我找到了解决方案。

为了能够在服务方法中接受 POJO,您需要将 @XmlRootElement 属性添加到您的 POJO,在类中编写无参数构造函数并为字段设置 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 对象。

关于java - 将通用列表参数发送到 JAX-RS Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38583229/

相关文章:

java - 有没有办法告诉 Gradle 在生成的 Javadoc 中包含依赖项 Javadoc?

java - App Engine : Reflection is not allowed on private java. lang.Throwable java.lang.Throwable.cause

java - Jersey - 从 XML 字符串填充 java beans

dependency-injection - Jersey : How to inject EJB into sub resource?

java - Jax-RS 是与 Web 服务通信的正确解决方案吗?

java - 使用 DDD 的域服务和应用程序服务的命名约定

Java内存分配DXX和XX的区别

java - 数据源无法通过 Spring boot 应用程序初始化?

java - 在 tomcat webapp 中引用可变的外部 web 服务 url

javascript - 为什么我调用第三方服务时不强制执行No 'Access-Control-Allow-Origin',而调用我自己的服务器时却强制执行?