我在控制器类中定义了一个REST服务操作,如下所示:
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(@BeanParam Widget widget) {
...
}
Widget是一个POJO bean类,即2个名为foo
&的私有字段。 bar
类型String
与公众吸气者& setters和public no-arg构造函数。
POST请求正文是:
{ "foo": "Some text", "bar": "Some more text" }
并且标题为Content-Type: application/json
在触发此请求时,createWidget
方法会将Widget
对象作为参数,但String
个字段均为null
。
有人能告诉我要填充的字段还需要什么吗?我认为POJO bean类中可能需要一些注释。如果内容类型为application/x-www-form-urlencoded
,那么我知道这些字段应注释@FormParam
,但我不确定application/json
内容的注释应该是什么。
非常感谢你的帮助...... - Ajoy
答案 0 :(得分:4)
通常,除了某些表单注释外,body参数不需要任何注释。这实际上是JAX = RS将如何确定是正文。因此,您只能拥有一个非注释参数,因为您只能拥有一个正文。所以只需更改你拥有的内容(只需删除@BeanParam
。只要你有一个JSON提供者,它就可以工作。
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(Widget widget) {