0
<student>
<id>1</id>
<badge></badge>
<name>Matt</name>
</student>

这是我在帖子中观察时的 xml 帖子。

public class Student implements Serializable{

Long id;
Integer badge;
String name;
}

我的网络服务:

    @Path("add")
    @POST
    @Consumes({Mediatype.xml,Mediatype.json})
    @Produces({Mediatype.xml,Mediatype.json})
    public Response add(Student student)
    {
    }

当我在我的服务层上调试这个添加方法时,变量徽章被赋值为“0”,即使它不是由 GUI 提供的。徽章的数据库字段也是整数(postgres)。

是否与整数变量有关,如果不存在则将默认值分配给 0 ?

4

1 回答 1

0

该类型Integer是引用类型。当您使用引用类型的变量创建类的实例时,它的默认值为null. 所以你看到的行为不是 Java 的。

Jersey 使用 JAXB 来编组和解组您的实体。当它看到您有一个badge包含空文本元素的字段时,它必须决定要设置的正确值是什么。给出它是没有意义的,null因为那里有一个元素。因此它决定将其初始化为0.

于 2013-07-25T13:52:36.267 回答