熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

WEB開發中Struts常見錯誤及原因分析

2013-11-23 20:20:24  來源: Java開源技術 
    本文總結了Struts常見錯誤及原因分析共記六點具體如下
   
    異常 javaxservletjspJspException: Cannot retrieve mapping for action /Login (/Login是你的action名字)
   
    可能原因action沒有再strutsconfigxml 中定義或沒有找到匹配的action例如在JSP文件中使用
   
    處理如果出現上述異常請查看strutsconfigxml中的定義部分有時可能是打錯了字符或者是某些不符合規則可以使用struts console工具來檢查
   
    異常 orgapachejasperJasperException: Cannot retrieve definition for form bean null
   
    可能原因  這個異常是因為Struts根據strutsconfigxml中的mapping沒有找到action期望的form bean大部分的情況可能是因為在formbean中設置的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類你已經在strutsconfigxml中設置了關聯(即添加了標簽)
   
    在strutsconfigxml中通過action標簽的class屬性指定的action類不能被找到有很多種原因例如
   
    定位編譯後的class文件失敗 Failure to place compiled class file for the action in the classpath (在 web開發中class的的位置在r WEBINF/classes所以你的action class必須要在這個目錄下例如你的action類位於WEBINF/classes/action/Loginclass那麼在strutsconfigxml中設置action的屬性 type時就是actionLogin)
   
    拼寫錯誤這個也時有發生並且不易找到特別注意第一個字母的大小寫和包的名稱
   
    在strutsconfigxml中指定的action類沒有繼承自Stuts的Action類或者你自定義的Action類沒有繼承自Struts提供的Action類
   
    你的action類必須繼承自Struts提供的Action類
   
    你的classpath的問題例如web server沒有發現你的資源文件資源文件必須在WEBINF/classes/目錄下
   
    異常 javaxservletjspJspException: No getter method for property username of bean orgapaclBEAN
   
    可能原因
   
    沒有位form bean中的某個變量定義getter 方法
   
    這個錯誤主要發生在表單提交的FormBean中用struts標記時在FormBean中必須有一個getUsername()方法注意字母U
   
    Exception  javaxservletjspJspException: Cannot find ActionMappings or ActionFormBeans collection
   
    可能原因
   
    不是標識Struts actionServlet的標記就是映射do擴展名的標記或者兩者都沒有在webxml中聲明
   
    在strutsconfigxml中的打字或者拼寫錯誤也可導致這個異常的發生例如缺少一個標記的關閉符號/>最好使用struts console工具檢查一下
   
    另外loadonstartup必須在webxml中聲明這要麼是一個空標記要麼指定一個數值這個數值用來表servlet運行的優先級數值越大優先級越低
   
    還有一個和使用loadonstartup有關的是使用Struts預編譯JSP文件時也可能導致這個異常
   
    Exception
   
    javaxservletjspJspException: Cannot find bean orgapaclBEAN 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
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.