我试图通过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
}
错误是:
那么什么是Param注释(@QueryParam和@PathParam都没有传递数据)我可以在我的情况下使用?
在Restful Web服务中使用Pojo的最佳方法是什么,并通过POSTMAN进行测试。
我在SOF中发现与此类似,但是通过了List of String,我采用了相同的方法,但没有工作。
答案 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。