当前位置: 代码迷 >> Web前端 >> 关于struts2表单自动封装数据时类型转换时 ongl setValue()报错的有关问题
  详细解决方案

关于struts2表单自动封装数据时类型转换时 ongl setValue()报错的有关问题

热度:783   发布时间:2012-08-25 10:06:20.0
关于struts2表单自动封装数据时类型转换时 ongl setValue()报错的问题
报错
DEBUG [http-8080-1] OgnlValueStack.setValue(165) | Error setting value
ognl.MethodFailedException: Method "setXxx" failed for object cn.Xxx@f036de [java.lang.NoSuchMethodException: setXxx([Ljava.lang.String;)]
.....

/-- Encapsulated exception ------------\
java.lang.NoSuchMethodException: setXxx([Ljava.lang.String;)
	at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:810)
	at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:964)
	at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:75)
	at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:131)
	at com.opensymphony.xwork2.util.OgnlValueStack$ObjectAccessor.setProperty(OgnlValueStack.java:68)
	at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1656)
	at ognl.ASTProperty.setValueBody(ASTProperty.java:101)
	at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
	at ognl.SimpleNode.setValue(SimpleNode.java:246)
	at ognl.ASTChain.setValueBody(ASTChain.java:172)
	at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
	at ognl.SimpleNode.setValue(SimpleNode.java:246)
	at ognl.Ognl.setValue(Ognl.java:476)
        ......

一般由于属性名字不对,一般类型不对等原因不解释了。
特殊原因:
属性为 int value1;
页面如果传入后台的参数值是null(这里不管用什么方式传值,只要是不能把null转换为""),那么由于属性为原始类型int,那么就会包上面的错,如果你把int改为Integer则会报另外的错。
不细心很难发现,不要认为什么插件都会把null转化为“”。
  相关解决方案