Estoy tratando de configurar un punto final de descanso con jersey. Estoy usando un cliente angular2.
el código angular se ve así:
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())); }); }La publicación se envía correctamente y puedo ver en la carga útil que todos los valores están allí.
Sin embargo, para dos valores siempre obtengo un valor nulo en el servidor. Aquí está el método:
@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); }No tengo ni idea de porqué. El tipo de medio es correcto, obtengo una respuesta 204...
¿Alguien tiene alguna idea de lo que estoy haciendo mal?
EDITAR
JSON
{"id":"1234", "name":"john", "age":15, "height":"6.2"}Usuario
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; } } Todos los valores, excepto la altura, son null o 0 , por lo que solo se lee correctamente el valor doble.
Bueno, su código real muestra muchos problemas, por lo que podemos afirmar:
User , tiene un atributo userId de usuario, mientras que en su JSON no lo tiene, es una id en su lugar.User son incorrectos, deberían tener la primera letra del atributo en mayúsculas, es decir: getage() debería ser getAge() y setage debería ser setAge() .Debe solucionar estos problemas; de lo contrario, su POJO no se asignará correctamente con su JSON.
Puede consultar Getters y Setters en la convención de Java para obtener más información al respecto.