页面请求后台action时,控制台提示找不到方法,小问题的疏忽!

在写一个模块,struts+spring+hibernate。客户端访问/hzzj/xtgl/cpsz.do?method=hzsCpszView路径,控制台报错,错误信息为:

ERROR --- DispatchAction.dispatchMethod(260) | Action[/hzzj/xtgl/cpsz] does not contain method named 'hzsCpszView'
java.lang.NoSuchMethodException: com.hope.nxfpb.struts.action.HzsCpszAction.hzsCpszView(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
at java.lang.Class.getMethod(Class.java:1581)
at org.apache.struts.actions.DispatchAction.getMethod(DispatchAction.java:347)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:255)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at 

struts 配置文件: 

<action path="/hzzj/xtgl/cpsz" 
           type="org.springframework.web.struts.DelegatingActionProxy"
           parameter="method">
</action>


spring 配置文件信息:

 <bean id="hzSCpszAction"
     name="/hzzj/xtgl/cpsz"
     class="com.hope.nxfpb.struts.action.HzsCpszAction"
     scope="prototype">
</bean>

 action 中的方法 :

  public ActionForward hzsCpszView(HttpServletRequest request, HttpServletResponse                                                 response,ActionMapping mapping, ActionForm form) {
          //...........
  }

检查配置文件、检查方法名字、重启服务、清除缓存、换tomcat、用别人的机子编译执行访问、让别人帮忙调试、找技术经理调试,各种折腾,一天时间过去了,问题依旧,各种蛋碎啊!!!

我撕长裙、撕短裙、百思不得骑姐!!!

就在无奈对着屏幕发呆之余,突然感觉有点不对啊,注意看action中的这个方法

  public ActionForward hzsCpszView(HttpServletRequest request, HttpServletResponse                                                 response,ActionMapping mapping, ActionForm form) {
          //........... 这个是提示找不到的方法
  }

public ActionForward hzsCpszAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
 ///......这个是action中的另一个方法
}

细心的你可能已经发现了问题所在了!!

对啊!正如你发现的,两个方法的参数顺序不一样啊!

难道是这个原因,当时的我还没有意识到这个问题,就想着,唉,修改一下试试吧!

在我调整掉出错方法的参数顺序后,好了!我顿时血溅三尺!

后来才想起,这个方法是手动写的,没有注意参数的顺序了!

总结:
 public ActionForward XXXX(HttpServletRequest request, HttpServletResponse                                                 response,ActionMapping mapping, ActionForm form) {
          //........... 
  }

  public ActionForward XXXX(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
    //...
  }
这类方法的参数顺序是必须按照:ActionMapping mapping , ActionForm form,
   HttpServletRequest request, HttpServletResponse response 这个顺序来写的!

高手勿喷,这一点在平时的代码编写过程中还真没注意过,在此提醒不知道这个问题的码友吗,可要注意了!


转载于:https://my.oschina.net/wjl152532/blog/119561

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值