这是对这个问题的后续问题:
我正在尝试使用 Postman 将 Json 对象发送到 Jersey Web 服务。
我是这样做的:
在泽西岛方面:
@Path("/testMethod")
@POST
@UnitOfWork
public short testMethod(@NotNull @BeanParam Test test)
{ ... }
测试类是一个简单的类:
public class Test
{
public String field;
public Test()
{
}
}
在邮递员方面,我发送一条 POST 消息,Body 设置为 raw,内容类型设置为 Json(application/json)。身体本身是:
{
"field" : "12"
}
发送此请求时,接收参数中的field
为空...为什么?
1 回答
如果您只想将 json 数据映射到 object,那么只需删除
@BeanParam
即可正常工作。但是,如果要使用
@BeanParam
功能,则应从第一个参数中删除该注释,并添加用@BeanParam
注释的第二个参数:然后使用其他字段映射实现 ExtraTest 类:
@BeanParam
是允许您轻松访问其他请求信息的功能(标题字段,查询参数 etc.)。它不能与您的 json 数据对象映射混合使用。更多信息:
https://abhirockzz.wordpress.com/2014/07/21/new-in-jax-rs-2-0-beanparam-annotation/
https://jersey.java.net/apidocs/2.22/jersey/javax/ws/rs/BeanParam.html