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