2012-4-11 10:31:04 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Error setting value
ognl.MethodFailedException: Method "setTotalMoney" failed for object cn.jbit.accp.entity.TAccount@1d3ce2c [java.lang.NoSuchMethodException: setTotalMoney([Ljava.lang.String;)]
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:823)
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.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:28)
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)
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:192)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:155)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:143)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:273)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:187)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at 看错误提示说是简单的设值问题,但是我觉得不是,我的那个totalMoney属性的setter和getter方法都有,其实set进去的值是7000,double类型的,我觉得应该不是这种问题,我弄了整整两天了,实在没办法,诸位能体会我心中的烦闷焦急吗,我现在发这个帖子是请求好心人帮我qq远程调试我的项目,帮我调试的人要懂得SSH框架,我是用的是tomcat服务器,谢谢,非常感激,我觉得如果是大家的文字留言不能解决这个问题,我的qq:172123324,谢谢

解决方案 »

  1.   

    加我Q 632167558 我只晚上在线 鬼子公司 上班不让用QQ
      

  2.   

    看这异常信息,是没有找到setTotalMoney()这个方法!这个方法的参数是什么类型?你是不是传的String
      

  3.   

    public Double getTotalMoney() {
    return this.totalMoney;
    } public void setTotalMoney(Double totalMoney) {
    System.out.println("panjie watch eneity set ---------------------------------->"+totalMoney);
    this.totalMoney = totalMoney;
    }
      

  4.   

    <input id="totalAccount" type="hidden" name="claimVoucher.totalMoney" value="<s:i18n name='format'><s:text name='global.format.money'><s:param value='claimVoucher.totalMoney'></s:param> </s:text> </s:i18n>"/>
    我将input标签中的value值换成700,就没有了这个错误,为什么我将OGNL表达式的值是用资源文件格式化就会出这个错误
      

  5.   


    <input id="totalAccount" type="hidden" name="claimVoucher.totalMoney" value="<s:property value='claimVoucher.totalAccount'"/>我换成OGNL表达式配合struts标签就没这个问题,现在的问题是为什么不能是用资源文件国际化
    我的资源文件名称是:format.properties,在src目录下
    内容是:
    global.format.date={0,date,yyyy-MM-dd}
    global.format.time={0,date,HH:mm:ss}
    global.format.datetime={0,date,yyyy-MM-dd HH:mm:ss}
    global.format.money={0,number,\#\#0.00}
    global.format.percent={0,number,##0.00'%'}
    我使用的是global.format.money,传递的参数是ognl表达式的值
    <s:i18n name='format'><s:text name='global.format.money'><s:param value='claimVoucher.totalMoney'></s:param> </s:text> </s:i18n>肚子疼死了,先去办事,然后还得回去吃饭,留言我下午就看,谢谢
      

  6.   

    既然是国际化的问题,那就是global.format.money的问题了!
    那这个是什么类型呢?String吗?如果是那么肯定是有错的!
      

  7.   

    应该是你传的参数的问题啊,异常里说你传入的参数是String类型的,这样就匹配不到public void setTotalMoney(Double totalMoney)这个方法,而是匹配public void setTotalMoney(String totalMoney)这样的方法,但是你没有这个方法签名的方法所以报异常!你可以看看你生成源文件里面的结果是啥
      

  8.   

    我用的是SSH框架,struts 2会自动进行数据类型转换的
      

  9.   

    我觉得这个有点道理,0代表我传进来的参数,我传的参数是claimVoucher.totalMoney这是个ognl表达式,它使用在<s:param../>struts 标签里,global.format.money={0,number,\#\#0.00}表示将这个参数的值转换为number类型,格式是后面的\#\#0.00,其实这个格式的写法虽然我不知道前面的\#\#是什么意思,但肯定是正确的,因为网上很多这种写法
      

  10.   

    那你还得在网上查查,反正就是国际化的问题!转换成number类型,能不能改成double呢!