在struts2下使用jQuery的Ajax方法的一些心得

       之前做過的一個大中型的web項目,框架都是架構師搭建起來的——標準的s2sh框架。架構師對立面的好多東西做了封裝,我們一些“新手”只是在框架的基礎的“累代碼”,項目做得挺順利的。也算是按期交付吧。

       現在做另一個項目,用到了jQuery的Ajax技術,用於唯一性驗證。但是Ajax老是不執行回調函數,最終花了兩週才搞定,都是由於之前沒有搞懂框架。下面是我解決問題的一些心得。

     1.Ajax函數不執行,肯定是Ajax的方法沒有寫對,諸如url、datatype;

     2.Ajax的回調函數不執行(調試中進了Action層),後臺報這個錯誤:Servlet.service() for servlet jsp threw exceptionjava.lang.ClassNotFoundException: com.opensymphony.xwork2.util.TextUtils ,首先是看看xwork-2.X.jar包下com.opensymphony.xwork2.util中沒有TextUtils.class文件,立刻更換xwork-2.X.jar,讓裏面含有TextUtils.class文件;

     3.如果是自己搭框架,jar有衝突,尤其是struts2、spring、xwork三個的jar,立刻換,讓三者兼容;(建議採用低版本的jar包)

     4.在Ajax對應的Action層中,不要使用HttpRequest的get、set方法,最好的做法是將httpServletRequest、httpServletResponse的get、set方法寫到一個父類中,然後Ajax對應的Action類去繼承這個父類,可以避免這個錯誤的發生:java.lang.IllegalStateException: getInputStream() has already been called for this request   這一條是我自己試出來的結果,至於原因我也說不上。

     5.struts2文件中配置Ajax需要繼承json-default,一般寫法<package name="包名" namespace="/命名空間,可以爲空" extends="json-default">,並且在配置返回值是直接寫<result type="json"/>即可

     6.在對應的Action中的所調用的對應的service的get、set方法上面需要加上@JSON(serialize = false);這一點很重要

     7.引入javassist.jar包:Javassist 字節碼解釋器,不然回報Dispatcher initialization failed……錯誤

  

下圖是我的部分jar包

以上就是我的一點心得,希望對大家有所幫助。

       

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