2011-04-26 80 views
0

我有一个表格:为什么struts 1.0将空字符串转换为0L?

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?

+1

您的实际代码是否有一个名为'getcontractId'的方法,或者它是否是'getContractId'? – 2011-04-26 13:35:33

回答

2

Struts ActionForm和DynaActionForm文档明确指定。

如果你不提供初始 属性,号码将被初始化 为0,对象为null。

我知道您使用的是Long,但是(即使在Autoboxing之前)以下数据类型是“装箱”的。

  • 整数/ INT
  • 双人/
  • 长/长
  • 浮动/浮动
  • 布尔/布尔
  • 短/短

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

我希望这会有所帮助。

相关问题