本文總結了Struts常見錯誤及原因分析
共記六點
具體如下
異常 javax
servlet
jsp
JspException: Cannot retrieve mapping for action /Login (/Login是你的action名字)
可能原因
action沒有再struts
config
xml 中定義
或沒有找到匹配的action
例如在JSP文件中使用
處理
如果出現上述異常
請查看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/目錄下
異常 javax
servlet
jsp
JspException: No getter method for property username of bean org
apacl
BEAN
可能原因
沒有位form bean中的某個變量定義getter 方法
這個錯誤主要發生在表單提交的FormBean中
用struts標記時
在FormBean中必須有一個getUsername()方法
注意字母
U
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文件時也可能導致這個異常
Exception
javax
servlet
jsp
JspException: Cannot find bean org
apacl
BEAN in any scope
Probable Causes
試圖在Struts的form標記外使用form的子元素
這常常發生在你在後面使用Struts的html標記
另外要注意可能你不經意使用的無主體的標記
如
這樣web 服務器解析時就當作一個無主體的標記
隨後使用的所有標記都被認為是在這個標記之外的
如又使用了
還有就是在使用taglib引入HTML標記庫時
你使用的prefix的值不是html
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28337.html