宁静的Web服务 - 添加Pojos列表

时间:2017-03-15 15:26:56

标签: java json rest jersey

我试图通过Restful Web服务传递Pojo的列表(State class)。

@POST
@Path("/saveDetails2")
@Consumes(MediaType.APPLICATION_JSON)
public String saveFormerWithLandDetails(@FormParam("name") String name, @FormParam("mobileNo") Long mobileNo,
        @FormParam("address1") String address1,@FormParam("address2") String address2,@FormParam("states")List<State> states) {
    // Business logic
    return  "SUCCESS";

}

在postman中,以下json数据作为原始数据添加:

{  
   "name":"ABCDSSS",
   "mobile":123456789,
   "addressLine1":"ADDRESS3456",
   "addressLine2":"ADDRESS3456",
   "states":[  
         {  
          "code":"ABC",
          "name":"TEST"
         }
    ]
 }

在标题中,Content-Type - application / json

州表是:

   @XmlRootElement(name = "State")
   @XmlAccessorType(XmlAccessType.NONE)
  public class State implements Serializable {

   @Id
   @XmlElement(name = "id")
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private long id;

  @XmlElement(name="code")
  @ Column(name = "state_code")
  private String code;

  @XmlElement(name="name")
  @Column(name="state_name")
  private String name;

  // setters and getters
}

错误是:

HTTP状态500 - java.lang.IllegalStateException:当请求实体的内容类型不是application / x-www-form-urlencoded

那么什么是Param注释(@QueryParam和@PathParam都没有传递数据)我可以在我的情况下使用?

在Restful Web服务中使用Pojo的最佳方法是什么,并通过POSTMAN进行测试。

我在SOF中发现与此类似,但是通过了List of String,我采用了相同的方法,但没有工作。

2 个答案:

答案 0 :(得分:0)

尝试使用应从POST请求中提取值的@PathParam

看看这个https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2225

答案 1 :(得分:0)

在您的问题中,您已将原因列入问题。

  

在标题中,Content-Type - application / json

@FormParam是x-www-url编码正文中的一个参数,其注册内容类型为application / x-www-form-urlencoded。

使用application / json排除了@FormParam的使用。您有几个选项:您可以使用适当的媒体类型来利用注释;您可以使用AoP编写自己的活页夹来解析值并传递它;你可以利用任意数量的json解析框架来自己解析它;或者你可以使用JsonPath

相关问题