2011-04-17 74 views
4

我在glassfish 3.0.1上使用jsf 2.0來構建一個接口到我的搜索引擎,當我在我的jsf頁面上使用Openfaces組件時,並且每當我提交表單時,我都會收到此錯誤消息:Jsf錯誤:java.lang.ClassCastException

java.lang.ClassCastException:[Ljava.lang.Object;不能轉換爲 com.sun.faces.application.view.StateHolderSaver

我沒有在網上找到任何幫助,請有什麼問題?以及如何擺脫它?

謝謝。

+1

請顯示相關代碼。 – MByD 2011-04-17 15:41:20

回答

9

這就是所謂的JSF issue 1427。如果在由JSF POST導航案例打開的頁面上觸發ajax請求,則部分狀態保存可能會失敗。有三種解決方案,推薦順序爲:

  1. 不要使用POST進行頁面到頁面導航。所以用<h:link><h:outputLink>代替<h:commandLink>。另見h:outputLink vs h:commandLink

  2. 實施POST-Redirect-GET模式。因此,如果您仍然在faces-config.xml中使用舊式<navigation-case>,請加入<redirect/>條目。或者,如果您使用隱式導航結果,則將?faces-redirect=true查詢字符串添加到結果中。

  3. 配置有問題的頁面以利用完整狀態保存。

    <context-param> 
        <param-name>javax.faces.FULL_STATE_SAVING_VIEW_IDS</param-name> 
        <param-value>/pagename.xhtml</param-value> 
    </context-param> 
    

+0

也許這是您第三種解決方案中的一種類型,但正如您在博客中所寫(http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html),多個頁面應以逗號分隔。 – 2012-10-11 09:25:50

+0

@Andrei:固定。 – BalusC 2012-10-11 10:45:35

1

下載JSF框架的新版本(多頁可以用逗號作爲分隔符來definied)。

查看版本2.1.11!

這是一個在內部jsf框架上的ajax狀態請求的錯誤引起的問題!

欲瞭解更多信息,請參閱鏈接http://java.net/jira/browse/JAVASERVERFACES-1845;