资料整理

 

Sturts中的常见异常

Sturts 中的常见异常:

异常  javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login  /Login 是你的 action 名字)  
可能原因 :action 没有再 struts-config.xml  中定义,或没有找到匹配的 action ,例如在 JSP 文件中使用  <HTML:FORM&NBSP;ACTION="LOGIN.DO". 将表单提交给 LOGIN.DO
处理 : 如果出现上述异常,请查看 struts-config.xml 中的定义部分,有时可能是打错了字符或者是某些不符合规则,可以使用 struts console 工具来检查。  

异常  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 的使用方法之一。

异常  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-INF/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 标记 <HTML:TEXT&NBSP;PROPERTY=”USERNAME”> 时,在 FormBean 中必须有一个 getUsername() 方法。注意字母“ U ”。  
5 Exception  javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection 
 
可能原因  
 
不是标识 Struts actionServlet 的标记就是映射 .do 扩展名的标记或者两者都没有在 web.xml 中声明。  
 
struts-config.xml 中的打字或者拼写错误也可导致这个异常的发生。例如缺少一个标记的关闭符号 /> 。最好使用 struts console 工具检查一下。  
 
另外, load-on-startup 必须在 web.xml 中声明,这要么是一个空标记,要么指定一个数值,这个数值用来表 servlet 运行的优先级,数值越大优先级越低。  
 
还有一个和使用 load-on-startup 有关的是使用 Struts 预编译 JSP 文件时也可能导致这个异常。  

6 Exception 
 javax.servlet.jsp.JspException: Cannot find bean org.apache.struts.taglib.html.BEAN in any scope 
 Probable Causes 
 
试图在 Struts form 标记外使用 form 的子元素。这常常发生在你在后面使用 Struts html 标记。

另外要注意可能你不经意使用的无主体的标记,如 <HTML:FORM&NBSP;…&NBSP; /> ,这样 web  服务器解析时就当作一个无主体的标记,随后使用的所有标记都被认为是在这个标记之外的,如又使用了 <HTML:TEXT&NBSP;PROPERTY=”ID”>

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

 

 

posted on 2006-07-17 17:02 谢玮 阅读(325) 评论(0)  编辑  收藏 所属分类: 流行框架Web


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(1)

随笔档案

文章分类

文章档案

搜索

最新评论