下面我就只贴出关键错误信息出来,帖多了也是无用;
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。总共报了很多个字段的错误,而且全都是一个错误模式。极度郁闷........如果硬要我贴多些信息的话,待会告诉我,我把那些看着就恶心的多得像蚂蚁一样的错误信息都贴出来

解决方案 »

  1.   

    你调的那个方法不要带参数,参数名写外面,在写get,set方法,你那个方法里面直接this。get
      

  2.   

    大哥。我是页面提交到action里面,不用什么get与set了,直接自动了。我只要调用service,service调用dao来保存pojo对象就好了。
    郁闷,就几个字段报错而已,而且检查很多遍了,页面上的字段名字与pojo中的属性是一样的明天就是新的一年了,心寒了...    
      

  3.   

    这个异常的意思是说,setAsLimbsCause(String arg)这样的一个方法没找到。
    很显然嘛,你定义的是byte型参数的方法。
    你数据库里是什么类型?
      

  4.   

      你提交的时候把方法传入到Action里面,传入参数的用 “!   ”  这样做了  设一个断点  看进去了没有。  如果进去了  就是你义务逻辑有问题。
      

  5.   

    应该是类型不对。画面是String,后台是什么类型。
      

  6.   

    setAsLimbsCause 方法参数类型不对。你action中的setAsLimbsCause方法参数类型应该不是String
      

  7.   

    参数类型不匹配。pojo全部改用string,在处理类里面去改类型就没这么多麻烦啦
      

  8.   

    看看你页面是怎么传递值的,  Struts2 调用的那个方法的参数是 String[] ,(打印 double[].class 看看是
    什么类型, 呵呵会有惊喜哦)将整个表单都贴一下, 将 Action 对应字段与非默认的 getter/setter 贴一下;
    如果有用自定义转换器也贴下...  
      :)
      

  9.   

    自定义个类型转换器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;
    }
    }}在WEB-INF/classes下放置xwork-conversion.properties文件 。在properties文件中的内容为:
    待转换的类型=类型转换器的全类名
    对于本例而言, xwork-conversion.properties文件中的内容为:
    java.lang.Short=ShortConverter的权限定名
    试试能成不,我也没测试过
      

  10.   

    不好意思 ,这三天没关注到问题,没及时回复大家给我的建议。数据库采用的是oracle10G,那些出错误的的字段在数据库中都是定义为number(4)。然后在类中是由hibernate自动生成的,就为Short类型。对于前面有人说相应的属性没有对应的setXX方法,那是不可能的。我给出一个 public Short getAsLimbsCause() {
    return this.asLimbsCause;
    } public void setAsLimbsCause(Short asLimbsCause) {
    this.asLimbsCause = asLimbsCause;
    }
    ,在jsp页面上,只要用这样就可以了撒<s:textfield name="cla.asLimbsCause" />.可就是我一提交,会报这个字段错误,就上面显示的那样的错误信息。。
      

  11.   

    你的Action中有cla这个属性么?
      

  12.   

    拦截器配了吗 
    从页面传后台都是String 之所以能变成不同的类型 是因为有拦截器