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

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(包括属性的gettersetter):

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却没有报错?这个是为什么?

【热门文章】
【热门文章】