我正在尝试用泽西设置一个休息终点。我正在使用angular2客户端。
角度代码如下所示:
post() {
let headers = new Headers({ 'Content-Type': 'application/json' });
this.http.post('http://localhost:8050/rest/addentity', JSON.stringify(this.getValues()), new RequestOptions({ headers: headers })).
subscribe(data => {
alert('ok');
}, error => {
console.log(JSON.stringify(error.json()));
});
}
帖子发送正确,我可以在有效载荷中看到所有值都在那里。
但是,对于两个值,我总是在服务器中得到null。这是方法:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Path("addentity")
public void saveEntity(User user) {
System.out.println("ADD CALLED");
System.out.println(user.getId()); // null
addUser(user);
}
我不知道为什么。媒体类型是正确的,我收到了204响应...
有没有人知道我做错了什么?
修改
JSON
{"id":"1234",
"name":"john",
"age":15,
"height":"6.2"}
用户
public class User implements Serializable {
private static final long serialVersionUID = -5320367665876425279L;
private Integer userId;
private String name;
private double height;
private int age;
public User() {
// TODO Auto-generated constructor stub
}
public User(final Integer userId, final String name,
final double height, final int age) {
this.userId = userId;
this.name = name;
this.height = height;
this.age = age;
}
public Integer getuserId() {
return userId;
}
public void setuserId(final Integer userId) {
this.userId = userId;
}
public String getname() {
return name;
}
public void setname(final String name) {
this.name = name;
}
public double getheight() {
return height;
}
public void setheight(final double height) {
this.height = height;
}
public int getage() {
return age;
}
public void setage(final int age) {
this.age = age;
}
}
除高度以外的所有值均为null
或0
,因此只能正确读取double值。
答案 0 :(得分:0)
根据我们的说法,您的实际代码显示了许多问题:
User
课程中,您有一个属性userId
,而在您的JSON中,您没有该属性,而是id
。User
类中的getter和setter不正确他们应该使用大写字母的第一个字母,即:getage()
应该是getAge()
而setage
应该是setAge()
。您必须解决这些问题,否则您的POJO将无法与您的JSON正确映射。
您可以参考 Getters and Setters in Java convention 进一步阅读相关内容。