具有 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 个名为 foo
和 bar
的私有字段,类型为 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) {
我在控制器 class 中定义了一个 REST 服务操作,如图所示:
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(@BeanParam Widget widget) {
...
}
Widget 是一个 POJO bean class,即 2 个名为 foo
和 bar
的私有字段,类型为 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) {