做网站怎么销售,网站设计与规划,百度做网站的联系人,响应式网站开发框架不久前在学习struts时出现这个错误#xff0c;在网上搜索了半天#xff0c;发现答案不一。将其总结如下#xff0c;以方便大家参考。 1、 你有没有试试看 其它的方法能不能用#xff0c;要是都是这种情况的话#xff0c;可能是你的Action类没有继承structs里面的DispatchA… 不久前在学习struts时出现这个错误在网上搜索了半天发现答案不一。将其总结如下以方便大家参考。 1、 你有没有试试看 其它的方法能不能用要是都是这种情况的话可能是你的Action类没有继承structs里面的DispatchAction或者其它的类。还有你注意下方法的参数列表类型顺序要正确才行是按照以下顺序的ActionMapping mapping,ActionForm form ,HttpServletRequest request,HttpServletResponse response 2、 发现有两种错误可能引起上述异常: 一.Action 类的方法被定义成private 类型. 如下Action 中被访问的方法被定义成private 类型.程序在访问其方法时,会抛出以上异常. 3、 其实java.lang.NoSuchMethodException这个异常的根本原因有两个第一缺少某些jar文件第二某些jar文件有重复。 4、 使用struts2框架出现的问题 在页面使用jquery ajax 调用action中的vaildUname方法报错说我的方法不存在。但实际是存在的。 public String vaildUname(String loginName) throws Exception{} 问题就在这个参数上struts2中是不能有参数的具体我也不知道为什 解决方法 private String loginName; public String vaildUname() throws Exception{} loginName的getter和setter方法 这样在使用ajax调用的时候就可以了 ·struts2是通过反射机制来执行action的方法struts2规范目前action方法是不需要参数的有参数的方法和没参数的方法是两个不同的方法所以会出现找不到的情况。 5、 jar版本不对 应该是3.6jar包的问题换回3.2的包又没事了 6、 java.lang.NoSuchMethodException 这个异常是指你的action里面没有这个方法说明已经找到了action 但是没有找到方法所以有2个情况 第1种情况是你提交到的不是这个action 查查配置文件有没有一样的path 第2种情况你的action里面没有这个方法 下面是转载的 public class NoSuchMethodException extends Exception 无法找到某一特定方法时抛出该异常。 ------------------------------------------------------------------------------------------------------------------------ 事实上我有特定的方法为什么struts2报此异常呢 以下是struts2配置文件片段 package namebasedate extendsstruts-default namespace/basedate !-- 服务商管理-- action namesaveOrUpdateBranch classbranchAction methodsaveOrUpdateBranch result namesuccess/WEB-INF/pages/srvclink/basedate/branch/branch.jsp/result result nameinput/WEB-INF/pages/srvclink/basedate/branch/branch.jsp/result /action action nameeditBranch classbranchAction methodeditBranch result namesuccess/WEB-INF/pages/srvclink/basedate/branch/branch.jsp/result /action action namedeleteBranch classbranchAction methoddeleteBranch result namesuccess typeredirectsaveOrUpdateBranch.action?isNewtrue/result /action action namesearchBranch classbranchAction methodsearchBranch result namesuccess/WEB-INF/pages/srvclink/basedate/branch/branch.jsp/result /action !-- 运输商管理-- action namesaveOrUpdateBranch classcarrierAction methodsaveOrUpdateBranch result namesuccess/WEB-INF/pages/srvclink/basedate/carrier/carrier.jsp/result /action action nameeditCarrier classcarrierAction methodeditCarrier result namesuccess/WEB-INF/pages/srvclink/basedate/carrier/carrier.jsp/result /action action namedeleteCarrier classcarrierAction methoddeleteCarrier result namesuccess typeredirectsaveOrUpdateCarrier.action?isNewtrue/result /action action namesearchCarrier classcarrierAction methodsearchCarrier result namesuccess/WEB-INF/pages/srvclink/basedate/carrier/carrier.jsp/result /action /package 细心的朋友应该能够发现因为复制粘贴惹的祸。导致同一命名空间下存在两个同名的action定义这不是关键关键问题是两个同名action的实例引用是不一样的struts2是顺序解析配置的action如果我们请求saveOrUpdateBranchstruts2会在命名空间为/basedate里查找请求的action是否存在如果存在就调用这个action如果不存在报异常告诉用户“在请求的命名空间中找不到指定的action”。这里我们请求的action是存在的错就错在它是顺序解析即便你第一个action定义无误但是它并未调用。它会继续查找/basedate下的action当它发现还有一个命名为saveOrUpdateBranch的action时也是最后一个aciton时它才调用这个请求的action。但是我们这里最后执行的action的引用又确实不存在。 我们最后定义的这个同名的action的实例是classcarrierAction 。事实上实例carrierAction确实没有saveOrUpdateBranch方法所以struts2就抛出无法找到特定的方法的异常。 粗心大意害死人哦... 摘自 csh624366188的专栏