1

複数のSessionBeanを使用してJSF2.1(MyFaces)アプリを実行しています(すべてのBeanはセッションBeanです)。タイムアウトは、web.xmlで次のように定義されています。

<session-config>
    <session-timeout>3600</session-timeout>
</session-config>

これは1時間に相当します。

問題は、通常の使用ではNo Saved View...例外が発生することです。

SEVERE: An exception occurred
javax.faces.application.ViewExpiredException: /mainPanel.jsfNo saved view state could be found for the view identifier: /mainPanel.jsf
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:128)

Beanは現在、Eclipseのideとの互換性のためにfaces-config.xmlで定義されています。

何がこれを引き起こしているのかわかりませんし、間違いなくタイムアウトではありません。問題となる可能性のあるアイデアはありますか?

私が提供できるさらなる情報があれば、私に知らせてください。

ありがとう!

PS-jsf-2.1タグはありません

アップデート1私はちょうど60が1分を意味すると考えました!:-)それが問題になる可能性があります。そのようになったら質問を閉じます

アップデート2それはそうではありませんでした...いくつかのより多くの情報それは役に立つかもしれません:

  1. エラーは特にのためのものですが/mainPanel.jsf、これは実際にはxhtmlの使用の構成です<ui:include>
  2. アプリ内の特定のポイントをクリックしたときにのみ発生します。クリックの結果として実行されるコードは次のとおりです。

Jqueryコード:

    $(document).ready(function() {

    $("#someTable tr:not(:first)").click(function(event) {

            var someValue = $(this).find("input:hidden").val();
            $('#currently_selected').val(someValue );
            $('#currently_selected').change();

        });
    });

JSF 2コード:

<h:form prependId="false" class="hide">
    <h:inputText value="#{someBean.someBeanValue}">
        <f:ajax event="change" listener="#{someBean.someBeanValueChanged}" render=":anotherForm"
            onevent="ifCompleteSetWindowHash" />
    </h:inputText>
</h:form>
4

2 に答える 2

1

一見すると、javax.faces.ViewStateの非表示フィールドに対する副作用のようです。このフィールドが上書きされた場合、ViewExpiredExceptionがスローされます。他の異なるJavaScriptコードで行っているのと同じことを試してください。

とにかく、それはあなたのsession-configパラメータとは関係ありません。ここに記載されている情報は、それを再現するには不十分です。前の提案で問題が解決しない場合は、MyFaces Issue Trackerで問題を作成し、例を添付してください。このようにして、あなたはそれを解決するでしょう。

于 2011-06-25T05:14:36.737 に答える
0

$シンボルはJSFのEL式用に予約された文字だと思います(編集:以下で説明するように、「$」だけは予約されていませんが、サードパーティコンポーネントライブラリは、jQueryと名前が競合する可能性のあるさまざまなjavascriptライブラリを使用する場合があります)。 jQuery関数呼び出しを明示的な長い形式の名前に変更してみて、それが違いを生むかどうかを確認してください。

例えば。それ以外の...

$(document).ready(function() {

これを行う...

jQuery(document).ready(function() {
于 2011-06-20T11:30:29.490 に答える