为什么我在jersy rest post方法中为某些参数设置了null?

时间:2017-04-27 08:39:35

标签: javascript java json angular jersey

我正在尝试用泽西设置一个休息终点。我正在使用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;
    }


}

除高度以外的所有值均为null0,因此只能正确读取double值。

1 个答案:

答案 0 :(得分:0)

根据我们的说法,您的实际代码显示了许多问题:

  • User课程中,您有一个属性userId,而在您的JSON中,您没有该属性,而是id
  • User类中的getter和setter不正确他们应该使用大写字母的第一个字母,即:getage()应该是getAge()setage应该是setAge()

您必须解决这些问题,否则您的POJO将无法与您的JSON正确映射。

您可以参考 Getters and Setters in Java convention 进一步阅读相关内容。