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
却没有报错?这个是为什么?
Jesen9
9 years, 6 months ago