Struts2的OGNL对于基本数据类型和包装数据类型是如何处理的?


测试 OGNL 的类型转化, 说如果输入的字符串不能成相应的数据类型就会抛出一个异常,于是我试了一下
输入页面的代码:


 <s:form action="fundationData">
   <s:textfield name="str" label="str"/>
   <s:textfield name="intData" label="intData"/>
   <s:textfield name="doubleData" label="doubleData"/>
   <s:textfield name="charData" label="charData"/>
   <s:textfield name="integerData" label="integerData"/>
   <s:submit/>
 </s:form>

对应 action.java (包括属性的 getter setter ):


 private String str ;
private int intData ;
private double doubleData ;
private char charData ;
private Integer integerData ;
public String execute()
{
    return Action.SUCCESS ;
}

我在网页的输入框中什么都不输入, 相应控制台输出 error :


 ParametersInterceptor[setParameters]:Unexpected Exception caught setting 'charData' on 'class OGNL.FundationalDataTransferAction: Error setting expression 'charData' with value '[Ljava.lang.String;@52326ce2'
ParametersInterceptor[setParameters]:Unexpected Exception caught setting 'doubleData' on 'class OGNL.FundationalDataTransferAction: Error setting expression 'doubleData' with value '[Ljava.lang.String;@6c8a9396'
ParametersInterceptor[setParameters]:Unexpected Exception caught setting 'intData' on 'class OGNL.FundationalDataTransferAction: Error setting expression 'intData' with value '[Ljava.lang.String;@7ddf9485'`

表明 intData , doubleData , charData 赋值的时候出错, 我自己想了一下, 输入的参数全部为 "" 空串,转换为 String 类型没问题, int , double , char 这些基本数据类型就会转换错误, 所以报错;
但是我不理解的是为什么 int 的包装类 Integer 却没有报错?这个是为什么?

struts2 java-ee

Jesen9 9 years, 6 months ago

Your Answer