0

我有一个表格:

public class ActionLogForm extends ActionForm {
    private Long ContractId;
    public Long getContractId() {
        return contractId;
    }

    public void setContractId(Long ContractId) {
        this.contractId= contractId;
    }
}

在 JSP 中,我有:

<html:hidden property="contractId" styleId="contractId" value="" />

为什么actionLogForm.getContractId()在我身上有0L?如何将默认值更改为 null?

4

1 回答 1

2

Struts ActionForm 和 DynaActionForm 文档明确指定。

如果您不提供初始属性,则数字将被初始化为 0,对象将被初始化为 null。

我知道您正在使用Long但(甚至在自动装箱之前)以下数据类型是“装箱”的。

  • 整数/整数
  • 双/双
  • 长/长
  • 浮动/浮动
  • 布尔值/布尔值
  • 短/短

当 Struts 看到一个Number对象子类型,而不是它的原始类型时,它会为你自动装箱,因此你有一个默认值0. 它有自己的原始/对象类型转换的实现(在 中BeanUtils)。这样做的原因是为了向后兼容旧的 Struts 1 版本(在 JDK 1.4 和 JDK 1.3 上运行)。

我希望这有帮助。

于 2011-04-26T13:55:17.363 回答