Struts2 报错,极度郁闷了
下面我就只贴出关键错误信息出来,帖多了也是无用;
ognl.MethodFailedException: Method "setAsLimbsCause" failed for object com.zhi.ds.pojo.ClAssess@1192e9 [
java.lang.NoSuchMethodException: setAsLimbsCause([Ljava.lang.String;)]
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:823)
java.lang.NoSuchMethodException: setAsLimbsCause([Ljava.lang.String;)
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:810)
这是我在一个页面上填写信息后,点击提交保存后报错的;
上面的错误信息真是搞不懂了。那个方法明明就在pojo中定义了,却硬要说没这个方法。而且
setAsLimbsCause([Ljava.lang.String;) 这个地方,中的参数,定义的是 Short类型,可显示却为String,还在Java前面加个L。总共报了很多个字段的错误,而且全都是一个错误模式。极度郁闷........
如果硬要我贴多些信息的话,待会告诉我,我把那些看着就恶心的多得像蚂蚁一样的错误信息都贴出来。。。
------解决方案--------------------你调的那个方法不要带参数,参数名写外面,在写get,set方法,你那个方法里面直接this。get
------解决方案--------------------你是不是xxx!method.action?
------解决方案--------------------这个异常的意思是说,setAsLimbsCause(String arg)这样的一个方法没找到。
很显然嘛,你定义的是byte型参数的方法。
你数据库里是什么类型?
------解决方案--------------------类型不匹配
------解决方案-------------------- 你提交的时候把方法传入到Action里面,传入参数的用 “! ” 这样做了 设一个断点 看进去了没有。 如果进去了 就是你义务逻辑有问题。
------解决方案--------------------应该是类型不对。画面是String,后台是什么类型。
------解决方案--------------------setAsLimbsCause 方法参数类型不对。你action中的setAsLimbsCause方法参数类型应该不是String
------解决方案--------------------类型不匹配 看看数据库里面的类型咯
------解决方案--------------------参数类型不匹配。pojo全部改用string,在处理类里面去改类型就没这么多麻烦啦
------解决方案--------------------看看你页面是怎么传递值的, Struts2 调用的那个方法的参数是 String[] ,(打印 double[].class 看看是
什么类型, 呵呵会有惊喜哦)
将整个表单都贴一下, 将 Action 对应字段与非默认的 getter/setter 贴一下;
如果有用自定义转换器也贴下...
:)
------解决方案--------------------自定义个类型转换器
Java code
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
public class ShortConverter extends DefaultTypeConverter {
@SuppressWarnings("unchecked")
public Object convertValue(Map<String, Object> context, Object value,
Class toType) {
if (toType==Short.class) {
String[] params = (String[]) value;
return Short.parseShort(params[0]);
}else if (toType==String.class) {
return ((Short) value).toString();
}else{
return null;
}
}
}
------解决方案--------------------
你的Action中有cla这个属性么?
------解决方案--------------------
拦截器配了吗
从页面传后台都是String 之所以能变成不同的类型 是因为有拦截器
------解决方案--------------------
楼主有点不负责任呢,我辛苦给写了个类型转换器,是楼主没试还是有错阿,好歹给了答复!
------解决方案--------------------
数据库中是什么类型?