快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记娱到h88285:Struts常见错误及原因分析



1 非常 javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login (/Login是你的action名字)

可能缘故原由:action没有再struts-config.xml 中定义,或没有找到匹配的action,例如在JSP文件中应用 处置惩罚:假如呈现上述非常,请查看struts-config.xml中的定义部分,无意偶尔可能是打错俗址?蛘呤悄承┎环?瞎嬖颍?梢允褂?truts console对象来反省。

2 非常 org.apache.jasper.JasperException: Cannot retrieve definition for form bean null

可能缘故原由:这个非常是由于Struts根据struts-config.xml中的mapping没有找到action期望的form bean。大年夜部分的环境可能是由于在form-bean中设置的name属性和action中设置的name属性不匹配所致。换句话说,action和form都应该各自有一个name属性,并且要正确匹配,包括大年夜小写。这个差错当没有name属性和action关联时也会发生,假如没有在action中指定name属性,那么就没有name属性和action相关联。当然当action制作某些节制时,譬如根据参数值跳转到响应的jsp页面,而不是处置惩罚表单数据,这是就不用name属性,这也是action的应用措施之一。

3 非常 No action instance for path /xxxx could be created

可能缘故原由

分外提示:由于有很多中环境会导致这个差错的发生,以是保举大年夜家调高你的web办事器的日志/调试级别,这样可以从更多的信息中看到潜在的、在试图创建action类时发生的差错,这个action类你已经在struts-config.xml中设置了关联(即添加了标签)。

在struts-config.xml中经由过程action标签的class属性指定的action类不能被找到有很多种缘故原由,例如:

定位编译后的.class文件掉败。Failure to place compiled .class file for the action in the classpath (在web开拓中,class的的位置在r WEB-INF/classes,以是你的action class必须要在这个目录下。例如你的action类位于WEB-和记娱到h88285INF/classes/action/Login.class,那么在struts-config.xml中设置action的属性type时便是action.Login).

拼写差错,这个也时有发生,并且不易找到,分外留意第一个字母的大年夜小写和包的名称。

在struts-config.xml中指定的action类没有承袭自Stuts的Action类,或者你自定义的Action类没有承袭自Struts供给的Action类。

你的action类必须承袭自Struts供给的Action类。

你的classpath的问题。例如web server没有发明你的资本文件,资本文件必须在WEB-INF/classes/目录下。

4 非常 javax.servlet.jsp.JspException: No getter method for property username of bean org.apache.struts.taglib.html.BEAN

可能缘故原由

没有位form bean中的某个变量定义getter 措施

这个差错主要发生在表单提交的FormBean中,用struts标记时,在FormBean中必须有一个getUsername()措施。留意字母“U”。

5 Exceptionjavax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection

可能缘故原由

不是标识Struts actionServlet的标记便是和记娱到h88285映射.do扩展名的标记或者两者都没有在web.xml中声明。

在struts-config.xml中的打字或者拼写差错也可导致这个非常的发生。例如缺少一个标记的关闭符号/>。最好应用struts console对象反和记娱到h88285省一下。

别的,load-on-startup必须在web.xml中声明,这要么是一个空标记,要么指定一个数值,这个数值用来表servlet运行的优先级,数值越大年夜优先级越低。

还有一个和应用load-on-startup有关的是应用Struts预编译JSP文件时也可能导致这个非常。

6 Exception

javax.servlet.jsp.JspExcep和记娱到h88285tion: Cannot find bean org.apache和记娱到h88285.struts.taglib.html.BEAN in any scope

Probable Causes

试图在Struts的form标记外应用form的子元素。这经常发生在你在后面应用Struts的html标记。

别的要留意可能你不经意应用的无主体的标记,如,这样web 办事器解析时就算作一个无主体的标记,随后应用的所有标记都被觉得是在这个标记之外的,如又应用了

还有便是在应用taglib引入HTML标记库时,你应用的prefix的值不是html。

您可能还会对下面的文章感兴趣: