Sturts
中的常见异常:
1
异常
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
工具来检查。
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-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
。