struts2常見錯誤總結

1.Caught exception while loading file struts-default.xml - [unknown location]
解決辦法:
由於lib包衝突造成的,將兩個解析xml用的jar從項目裏移到tomacat的lib下面就ok了,xml-apis.jar xerces-2.6.2.jar
2.嚴重: Exception starting filter struts2
Error building results for action login in namespace  - action - file:/E:/apache-tomcat-6.0.14/webapps/testStruts2/WEB-INF/classes/struts.xmlstruts2常見錯誤總結57
原因:在web.xml已聲明使用模板,並對所有的類進行了監聽,但在處理過程中,發現不知道到哪裏去找模板的配置文件,即在struts.xml中已使用了模板,但並沒有告訴程序應該到哪去解析這些內容,即titles-default.java文件應該聲明出來,
原因1:在struts.xml中錯誤的聲明如下:
<package name="aa1" extends="struts-default" >
<action name="login" class="com.sun.demo.LoginAction">
<result type="tiles">showWelcomePage</result>

</action>

</package>
應改爲:
<package name="aa1" extends="titles-default" >
<action name="login" class="com.sun.demo.LoginAction">
<result type="tiles">showWelcomePage</result>

</action>

</package>
原因2:titles.xml文件的 錯誤配置
<tiles-definitions>
         <definition name="showWelcomePage" template="template.jsp">                 
              <put-attribute name="menu" >menu_1.jsp</put-attribute>                 
              <put-attribute name="content" >login_form.jsp</put-attribute>
</definition>
正確的配置爲:
<tiles-definitions>
         <definition name="showWelcomePage" template="template.jsp">                 
              <put-attribute name="menu" value="/menu_1.jsp"></put-attribute>                 
              <put-attribute name="content" value="/login_form.jsp"></put-attribute>
</definition>
頁面顯示情況如下:

錯誤配置如下:
<definition name="showWelcomePage" template="template.jsp">                 
              <put-attribute name="menu" value="menu_1.jsp"></put-attribute>                 
              <put-attribute name="content" value="login_form.jsp"></put-attribute>
</definition>
正確配置如下 :
<definition name="showWelcomePage" template="template.jsp">                 
              <put-attribute name="menu" value="/menu_1.jsp"></put-attribute>                 
              <put-attribute name="content" value="/login_form.jsp"></put-attribute>
</definition>
在value屬性中,以"/"開頭表示地址,如果不以“/”開頭,則系統會默認爲內容
3.執行增加操作時,直接對對象進行操作,對象中各字段值都正確,但插入數據庫後亂碼
解決辦法(1)統一頁面和數據庫編碼爲utf-8
(2)修改hibernate的配置文件,修改url屬性爲:
jdbc:mysql:/127.0.0.1:3306/shop?useunicode=true&characterEncuoding=utf-8
4.could not create Query
原因:sql語句書寫不正確
5.mysql數據庫問題
mysql Error 1115號錯誤,utf編碼
解決辦法:
安裝時編碼採用默認的編碼,安裝成功後,再到安裝路徑下修改安裝語言,修改mysql/my.ini文件。
6.在對對象進行刪除操作時,如果對象中的某個字段不允許爲空,則必須賦值,否則會提示:字段名not null等信息
7.在進行頁面跳轉時(從action中到頁面,使用了模板),提示I/O異常
解決辦法:tiles.xml文件中document題頭沒有書寫正確
8.在進行頁面跳轉時,已經跳轉到了相應的頁面,但顯示結果頁面不正確。
解決辦法:檢查模板中的各個屬性是否正確配置,尤其注意有的屬性會忘記配置。
9.對日期類型數據進行操作
(1)配置文件中相對應的字段屬性改爲date
(2)pojo類中引用java.sql.date
10.Nosuchdefinition titles...
原因:tiles.xml文件中的配置有問題,尤其注意name屬性
11.在服務器一啓動,就會報“Filter error”等提示信息,項目無法建立
原因struts2常見錯誤總結1)struts.xml配置錯誤
1>package中extends錯誤
2>action中
12、No result defined for action ***Action and result success
    這個錯誤產生的原因是,在struts.xml中配置沒有配置success result。我的理解是action執行完後,必須產生一個result類。這個類可是servlet或是其他,但不能爲空。
    解決方法:增加result success定義。
    <result>***.jsp</result>
  
   13、No result defined for action ***Action and result input
   這個錯誤,在提交數據時經常碰到。定義的struts2 intercept發揮了作用,當POJO類型與輸入的類型不同時,intercept類會中止攔截,並返回輸入頁面。詳細的錯誤可在使用<s:fielderror/>來獲取。
    解決方法:增加resut input定義。
    <result name="input">***.jsp</result>
  
   14、There is no Action mapped for namespace / and action name ***Action
    可以直譯爲沒有找到這個action,也就是說在struts.xml中沒有定義這個action。這個錯誤一般是action的名字拼寫錯誤造成的,請仔細檢查struts.xml的定義與頁面的acrion是否一致。

   15、Class ognl.OgnlRuntime can not access a member of class ***Action with modifiers "private"
    關鍵字是"private",action類中的字段爲private,這樣頁面(如jsp)是無法訪問到的,這也是struts2面向對象的一大特徵。
    解決方法:
    在action中添加set get方法,這樣struts會自訪問這個方法。set get方法必須遵循bean的標準寫法。


  16、Exception starting filter struts2
   未定變義struts-default。也package中加入extends="struts-default"
 
17、筆下之前遇到一個問題:報:Error building results for action admin_* in namespace
同時還報:Caused by: There is no result type defined for type 'redirectAction'
網上說是package元素裏要加入extends="struts-default"屬性,
但是package元素裏有extends="struts-default"屬性,之前很費解
最後修改redirectAction爲redirect-action解決問題,個人估計是struts2版本的問題
<result name="checkSuccess" type="redirect-action">
總結:仔細看錯誤原因很重要,對症下藥!
 
 
18、redirect和redirect-action的區別
使用redirect需要後綴名
使用redirect-action"不需要後綴名

<result name="success" type="redirect">viewTask.action</result>

<result name="success" type="redirect-action">viewTask</result>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章