有了这个示例 JAX-RS web-service,第二个参数的getByAttribute
类型是Object.class
.
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/POJOService")
public interface POJOService extends BasicService {
@GET
@Path("/getByAttribute")
SampleObject getByAttribute(@QueryParam("attribute") String attribute, @QueryParam("value") Object value);
}
这将导致错误:
有效负载:参数类 java.lang.Object 没有带有单个 String 参数、静态 valueOf(String) 或 fromString(String) 方法的构造函数
我正在考虑添加一个提供者,javax.ws.rs.ext.ParamConverterProvider
该提供者将传递 JSON 字符串中的类型。但也许有这个问题的最佳实践解决方案?
将现有企业服务器/客户端应用程序的通信层迁移到JAX-RS 2.1。
为 MicroProfile使用Apache CXF和Eclipse Rest Client。
编辑:客户端将调用不同类型的服务:
service.getByAttribute("name", "example"); // string, used for this test which throws the exception
service.getByAttribute("id", 99); // integer
service.getByAttribute("author", user); // object instace of User.class