2011-06-20 96 views
1

我有一個JSF 2.1(MyFaces)應用程序運行時使用多個會話Bean(所有的Bean都是會話Bean)。 超時是在web.xml定義爲這樣:JSF 2會話Bean問題

<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) 

將豆,目前,在faces-config.xml中定義爲與Eclipse的IDE兼容。

我不確定可能是什麼原因造成的,它絕對不是超時。 任何想法可能是什麼問題?

如果有任何進一步的信息我可以提供,讓我知道..

謝謝!

P.S - 沒有jsf-2.1標籤

更新1我只是想出60意味着一分鐘! :-)這可能是問題所在。我會關閉的問題,如果事實證明這種方式

更新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> 

回答

1

乍這似乎是在javax.faces.ViewState隱藏領域的一些副作用。如果這個字段被覆蓋,則會拋出ViewExpiredException。嘗試使用其他不同的JavaScript代碼來做同樣的事情。

無論如何它與session-config參數無關。這裏提供的信息不足以重現它。如果以前的建議無法解決您的問題,請在MyFaces Issue Tracker上創建問題並附上示例。這樣你就可以解決問題。

+0

Thanks @ Lu4242,我將一些'h:inputHidden'組件改爲'h:inputText class =「hide」',問題似乎消失了。這有意義嗎? – Ben

0

我相信$符號是EL表達式保留字符在JSF (編輯:如下所述,單獨'$'不保留,但第三方組件libararies可能會使用各種JavaScript庫,可能hav e與jQuery的命名衝突)。嘗試將您的jQuery函數調用更改爲明確的長表單名稱,然後查看是否有所作爲。

例如,而不是...

$(document).ready(function() { 

操作方法......

jQuery(document).ready(function() { 
+1

這是不正確的。只保留'$ {...}'(包括大括號)。至於jQuery,只有當'$()'函數已被另一個JS庫(如Prototype,Scriptaculous等)使用時纔會導致未知/未定義的函數名稱JS錯誤。 – BalusC

+0

是的更正確!像Primefaces這樣的許多第三方組件庫在其許多組件中都使用這種JS庫。我覺得這是一個最佳實踐,因爲這樣可以在任何JSF應用程序中使用長格式的jQuery,即使沒有第三方組件庫存在,也可以避免這種命名衝突。這仍然是OP的問題。 –

+0

我沒有印象,這是一個jQuery問題。症狀不指向這個方向。 – BalusC