zoukankan      html  css  js  c++  java
  • 在Struts2中ognl.MethodFailedExceptiond异常的解决办法

    问题描述:

          在 Struts2 里面,当页面向服务器提交参数时报ognl.MethodFailedException:和java.lang.NoSuchMethodException:异常

    异常信息 

    Error setting expression 'itemList[0].menge ' with value '[Ljava.lang.String;@195575f'
    ognl.MethodFailedException: Method "setMenge" failed for object PartOrderItem [id=null, menge=null, partLgort=null, partOrder=null] [java.lang.NoSuchMethodException: com.ns.extra.bean.PartOrderItem.setMenge([Ljava.lang.String;)]
     at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1265)
     at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1454)
     at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
     at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
     at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:28)
     at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2225)
     at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
     at ognl.SimpleNode.setValue(SimpleNode.java:301)
     at ognl.ASTChain.setValueBody(ASTChain.java:227)
     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
     at ognl.SimpleNode.setValue(SimpleNode.java:301)
     at ognl.Ognl.setValue(Ognl.java:737)
     at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:198)

    Caused by: java.lang.NoSuchMethodException: com.ns.extra.bean.PartOrderItem.setMenge([Ljava.lang.String;)
     at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1206)
     ... 65 more
    /-- Encapsulated exception ------------
    java.lang.NoSuchMethodException: com.ns.extra.bean.PartOrderItem.setMenge([Ljava.lang.String;)
     at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1206)
     at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1454)
     at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)

     menge PartOrderItem类的一个属性字段 ,int类型 . 

    问题原因:是数据的类型不对

    解决办法:

    1、将 menge的类型修改为 Integer类型 ( 包装类型 ) ,并且 getter , setter 方法的返回类型和参数类型都要修改成 Integer类型。即可解决此问题。

    还有,如果你要传递的参数时 Struts2 的 Action 的属性对象的子属性,最好也改成 包装 类型,不然会报同样的错误。

    2、在请求地址的参数中  http://127.0.0.1:8080/newEbarcode/partOrder!savePartOrder.action?bean.vbeln=25425&bean.name=hgjhg&bean.mark=hgfjhgfh&itemList[0].partLgort.matnr =354&itemList[0].menge = 0&itemList[0].partLgort.lgort =354355&itemList[0].partLgort.describe =    参数名后面切记不可加空格(String类型除外),否则也汇报这个错

    建议: 只要从页面传递的参数是 Struts2 的 Action 的属性或者属性对象的子属性,都把它们的类型从原始类型 (int,float,double) 修改改成包装类型 (Integer,Float,Double) ,当然它们的 setter 和 getter 方法的参数和返回值也要修改成包装类型,这样就可以避免不必要的此类异常。

  • 相关阅读:
    好学习法
    error execution phase upload-config/kubelet: Error writing Crisocket information for the control-plane node: timed out waiting for the condition
    linux 大实话
    解决vi/vim中粘贴 格式错乱
    centos7 调试系统服务命令
    gitlab jenkins docker kubernetes
    修改centos7主机名
    野战ci/cd
    相互交流生成快捷网页链接
    设置centos7静态网卡配置文件
  • 原文地址:https://www.cnblogs.com/arnoid/p/3342864.html
Copyright © 2011-2022 走看看