来自请求的空/空值被分配为0

时间:2013-07-25 13:42:45

标签: java web-services jersey

<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)
    {
    }

当我在服务层上对此add方法进行调试时,变量徽章会被指定为值“0”,即使它不是由GUI提供的。徽章的数据库字段也是整数(postgres)。

它是否与Integer变量有关,如果不存在则将默认值赋值为0?

1 个答案:

答案 0 :(得分:0)

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

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