[英]JSF 2.0 AJAX Calls Failing
我正在做一個項目,以使用JSF1.2,JSP,Struts,Tiles,Richfaces來使用現有項目……僅使用JSF2.0,內置facelets支持並將Richfaces更新到版本4。
到目前為止,除了一個主要的路障之外,其他一切進展順利。 我正在嘗試將以前使用<a4j:support>
標記處理的AJAX組件更新為<f:ajax>
標記,而不是按照我希望的方式工作,我遇到了一個錯誤,我只能解釋因為我忘記了一切配置方面的東西。
這是在com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter()方法中引發的NullPointerException。
第一次加載頁面時,我可以在調試器中看到正確綁定到支持值的組件。 頁面加載無任何意外。 當我嘗試激活所述組件上的AJAX事件時,它會崩潰。 我收到錯誤消息,並且沒有通過AJAX更新任何內容。 我嘗試轉換的每個AJAX組件都在發生這種情況。 這是一個這樣的例子:
<h:selectOneMenu
value="#{userSession.selectedNetwork}"
id="network"
>
<f:selectItems value="#{userSession.networkUIOptions}" />
<f:ajax event="change" render="selectedStation edit_site_button add_site_button"/>
</h:selectOneMenu>
我不知道這是否相關,但是我在該代碼中引用的Bean現在被注釋為ala JSF2.0並已從faces-config.xml中刪除,但是,我還沒有完全擺脫掉faces- config.xml中。 仍在努力轉換所有內容。 另外,我正在Tomcat 6.0上運行它。
任何幫助,建議將不勝感激。 我真的陷在這個問題上了。
編輯1:
按照我下載的捆綁包標題使用mojarra 2.1.1版。 無法獲取准確的堆棧跟蹤。 更改了許多內容后,日志似乎無法正常工作。 將繼續嘗試。 也將嘗試簡單的頁面並報告結果。
編輯2:因此,嘗試“最小化”頁面會產生相同的結果,相同的錯誤。
仍然無法使日志記錄完全正確地工作,因此進行了一些貧民區日志記錄。 參見下文,了解類似於正確的堆棧跟蹤的內容:
編輯3:好的,用行號更新了貧民窟堆棧跟蹤。 您在第一個類的行號上猜對了,就拋出了錯誤: http : //pastebin.com/49yUDcPM
NPNSessionFilter.java的doFilter函數: http ://pastebin.com/iwG0rcQ6
我在建議下為BalusC創建的測試頁: http : //pastebin.com/kSeUyj7g
編輯4:
http://tinypic.com/r/2dca0yo/7 http://tinypic.com/r/16jet7s/7
這是WAR的WEB-INF / lib文件夾中當前打包的lib的圖像。 以前的程序員包括很多我還沒有清除的垃圾。 同樣,不確定struts JAR的來源。 刪除了我可以找到的與strust或tile相關的所有pre-dist JAR。
編輯5:
好,突破! 這個評論帶來了一個與眾不同的世界:“同樣,不確定struts JAR來自何處。刪除了我可以找到的與strust或tile相關的所有pre-dist JAR。”
耳朵清潔,疏遠,現在情況更好。 顯然,這不僅僅是我忘記刪除的一個lib,而是我忘記刪除的一個lib,然后在刪除之后清理EAR。 AJAX請求現在可以正常處理了,我可以看到調試器中的值在請求通過時被重新綁定! 大量其他問題,但可以自己解決。 BalusC,您使我想到了這個解決方案; 如果您想提交答案,我會很樂意接受!
com.sun.faces.context.PartialViewContextImpl:PartialViewContextImpl.java:createPartialResponseWriter:441上的NullPointerException
此異常表明JSF視圖根為null,這反過來又表明,在類路徑中有一些針對JSF 1.2的第三方或自定義ViewHandler
,這並非完全適合JSF 2.0,因此也需要升級(或完全刪除)。
根據您的屏幕快照以及所有JAR的概述, struts-faces
JAR是主要的可疑對象。 但是,Apache Commons和JSTL庫的混合版本看起來也不正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.