• Struts报错NoSuchMethodException的解决方法


    Struts报错NoSuchMethodException,如下所示:

    Struts Problem Report
    Struts has detected an unhandled exception: 
    Messages:    •  No row with the given identifier exists: [com.ftms.entity.JPositionTown#0] 
    File:    org/hibernate/internal/SessionFactoryImpl.java
    Line number:    247
    
    ________________________________________
    Stacktraces
    org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.ftms.entity.JPositionTown#0] 
        org.hibernate.internal.SessionFactoryImpl$1$1.handleEntityNotFound(SessionFactoryImpl.java:247)
        org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:210)
        org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:251)
        org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:148)
        org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1079)
        org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1006)
        org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:613)
        org.hibernate.type.EntityType.resolve(EntityType.java:441)
        org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:168)
        org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:134)
        org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:995)
        org.hibernate.loader.Loader.doQuery(Loader.java:874)
        org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
        org.hibernate.loader.Loader.doList(Loader.java:2438)
        org.hibernate.loader.Loader.doList(Loader.java:2424)
        org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2254)
        org.hibernate.loader.Loader.list(Loader.java:2249)
        org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470)
        org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
        org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
        org.hibernate.internal.SessionImpl.list(SessionImpl.java:1248)
        org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
        com.ftms.dao.UserDAO.findByProperty(UserDAO.java:112)
        com.ftms.dao.UserDAO.findByUsername(UserDAO.java:120)
        com.ftms.dao.UserDAO$$FastClassByCGLIB$$42997a1e.invoke(<generated>)
        net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)

    但是web.xml检查无误,Strus的映射路径也完全没有问题,这时候可能是Action的方法参数出现了错误,比如在我的Struts.xml中定义如下

    <action name="queryPsd" class="UserManageAction" method="queryPsd">
        <result type="json" name="queryPsd">
            <param name="root">psdJson</param>
        </result>
    </action>    

    在Action中,定义了一个queryPsd方法

    public String queryPsd(){
        psdJson = new JSONArray();
        String psd = userService.queryPsd(username);
        psdJson.add(0,psd);
        return "queryPsd";
    }

    这样就可以了。

    之所以没有在queryPsd方法中接收参数,是因为在这个Action中已经定义了getter和setter方法。

    但是,如果此时在queryPsd方法中再次接收参数,比如:

    public String queryPsd(String username){
        psdJson = new JSONArray();
        String psd = userService.queryPsd(username);
        psdJson.add(0,psd);
        return "queryPsd";
    }

    那就会报这个NoSuchMethodException错误

    因此,当出现NoSuchMethodException错误提示时,可以检查Action中对应的方法参数是否对应正确。

  • 相关阅读:
    积少成多Flash(8) ActionScript 3.0 网页之获取参数,JavaScript与ActionScript之间的相互调用
    积少成多Flash(11) Flex 3.0 动画效果(effect)
    积少成多Flash(9) Flex 3.0 布局控件, 样式(css), 皮肤(skin)
    系出名门Android(8) 控件(View)之TextSwitcher, Gallery, ImageSwitcher, GridView, ListView, ExpandableList
    系出名门Android(9) 数据库支持(SQLite), 内容提供器(ContentProvider)
    积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引
    系出名门Android(5) 控件(View)之TextView, Button, ImageButton, ImageView, CheckBox, RadioButton, AnalogClock, DigitalClock
    系出名门Android(1) 在 Windows 下搭建 Android 开发环境,以及 Hello World 程序
    小程序webview组件 nothing
    Python3的bytes/str之别
  • 原文地址:https://www.cnblogs.com/liesun/p/9243867.html
Copyright © 2020-2023  润新知