struts1报错does not contain specified method异常信息: Java代码 2011-8-18 20:50:07 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet action threw exception java.lang.NoSuchMethodException: Action[/userAction] does not contain specified method (check logs)
错误代码: Java代码 public ActionForward doQuery(ActionMapping mapping, ActionForm form, ServletRequest request, ServletResponse response) throws Exception {
//内部实现略
}
问题出在方法的参数中 原本应重写DispatchAction类中的execute方法,改一下名字后直接使用。结果错误重写了Action类中的execute, 解决方案: Java代码 public ActionForward doQuery(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//内部实现略
}
出现此异常的其他几种情况: 1、自定义Action类需要继承DispatchAction类。 2、方法参数ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response 顺序也需一致。 3、方法的访问修饰符设置为public、不是protected,更不是其他。 4、动态调用Action,在struts-config.xml中要配置Action的parameter参数, 参数是页面传值的参数,值与要执行Action中的方法名相同。 5、页面表单提交方式为post,否则也有可能出现这种异常。 Xml代码 <action-mappings > <action path="/userAction" type="org.springframework.web.struts.DelegatingActionProxy" name="userForm" parameter="method" > <forward name="success" path="/index.jsp"></forward> <forward name="error" path="/error.jsp"></forward> </action> </action-mappings>
Html代码 <html:form action="userAction.do?method=doQuery" method="post"> Name:<html:text property="user.fname"></html:text> Area:<html:text property="user.farea"></html:text> <html:submit value="Search Flowers"></html:submit> </html:form>
javax.servlet.ServletException: DispatchMapping[XXX] does not define a handler property 错误 :javax.servlet.ServletException: DispatchMapping[0] does not define a handler property 原因: action参数配置不全 解决方法:在 config文件中 添加 parameter="method"等
错误: 表单数据验证失败时发生错误,“No input attribute for mapping path” 原因:action中表单验证 validate="true" ,如果validate()返回非空的ActionErrors,将会被转到input属性指定的URI,而action中未指定input时会报此错 解决方法:添加 input="url" 或者 validate="false"
错误:jsp页面中,一个form有隐藏的method属性,<input type="hidden" name="method" value="<bean:message key="button.deleteall"/>"> ,当其他的button使用 method时会默认为使用该属性,则达不到程序员预期的操作 解决方法:实用javascript写一个function,改变该method值 function{ document.forms[0].elements.value="你要的操作名";
}
错误:Action里无法解析 导入的包,Form里的方法,但是代码没错 原因:不明,我是改变了validation.xml后重新发布而出了错的 解决方法:将工程关了,再打开,myeclipse会将工程重新构建,这样问题就解决了 ps:重启Tomcat是没有用滴……
错误:Struts:HTTP Status 404 - Servlet action is not available
原因 1、web.xml文件中未配置ActionServlet。 2、struts-config.xml文件未配置你要访问的Action。 3、你的jsp文件form标记中action属性的路径名称错误。 4、非以上三种情况。
针对以上4种情况相应的解决方案如下: 1、在web.xml文件中加上ActionServlet的配置信息 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>0</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet>
2、在struts-config.xml文件检查你要访问的Action配置文件。 3、检查jsp文件form标记中action属性的路径名称是否与struts-config.xml文件中action标记的path属性的路径名称一致。 4、非以上情况的解决办法就是检查web容器的log日志,如果时tomcat则检查下logs目录下的localhost_log文件,看里边是否记录有错误信息,然后根据错误信息提示将其纠正。 2011-05-09 转自 https://www./blog/778042-1037611
|