具有 application/json 和 BeanParam 的 POJO 中的空字段

Null fields in POJO with application/json and BeanParam

我在控制器 class 中定义了一个 REST 服务操作,如图所示:

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(@BeanParam Widget widget) {
    ...
}

Widget 是一个 POJO bean class,即 2 个名为 foobar 的私有字段,类型为 String,具有 public getter 和 setter,以及一个 public no-arg 构造函数。

POST请求body是:

{ "foo": "Some text", "bar": "Some more text" }

并且有 header Content-Type: application/json

触发此请求时,createWidget 方法获取 Widget object 作为参数,但两个 String 字段都是 null.

有人可以告诉我填充字段还需要什么吗?我认为 POJO bean 中可能需要一些注释 class。如果内容类型是 application/x-www-form-urlencoded,那么我知道这些字段应该被注释为 @FormParam,但我不确定 application/json 内容的注释应该是什么。

非常感谢您的帮助... - 快乐

一般情况下,除了一些表单注解外,body参数不需要任何注解。这实际上就是 JAX=RS 确定它 正文的方式。所以你只能有 one 非注释参数,因为你只能有一个主体。因此,只需更改您所拥有的(只需删除 @BeanParam。只要您有 JSON 提供程序,它就应该可以工作。

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(Widget widget) {