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中对应的方法参数是否对应正确。

转载于:https://www.cnblogs.com/liesun/p/9243867.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值