5

私はグラスフィッシュ3.0.1でjsf 2.0を使用して検索エンジンへのインターフェースを構築しています.jsfページでOpenfacesコンポーネントを使用し、フォームを送信するたびにこのエラーメッセージが表示されます:

java.lang.ClassCastException: [Ljava.lang.Object; com.sun.faces.application.view.StateHolderSaver にキャストできません

ウェブ上でヘルプが見つかりませんでした。何が問題なのですか? そしてそれを取り除く方法は?

ありがとう。

4

2 に答える 2

10

これはJSF問題1427として知られています。JSF POSTナビゲーションケースによって開かれたページでajaxリクエストが発生すると、部分的な状態の保存が失敗する場合があります。推奨される順序で、3つの解決策があります。

  1. ページ間ナビゲーションにPOSTを使用しないでください。したがって<h:commandLink><h:link>またはに置き換え<h:outputLink>ます。h:outputLinkvsh:commandLinkも参照してください。

  2. POST-Redirect-GETパターンを実装します。したがって、まだ昔ながら<navigation-case>のを使用している場合は、エントリfaces-config.xmlを追加してください。<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>
    

    (複数のページは、区切り文字としてコンマを使用して定義できます)

于 2011-04-17T18:35:50.507 に答える
1

新しいバージョンの JSF フレームワークをダウンロードします。

バージョン 2.1.11 を参照してください。

これは、内部 jsf フレームワークの ajax ステート リクエストのバグが原因で発生する問題です。

詳細については、リンクhttp://java.net/jira/browse/JAVASERVERFACES-1845を参照してください。

于 2012-07-13T13:52:21.653 に答える