2016-03-04 55 views
1

的交互我與primefaces工作3.4.2 Javax.faces 2.1.9會議迷路即使我

我的web.xml

<session-config> 
    <session-timeout>45</session-timeout> 
</session-config> 

<p:idleMonitor id="idMonitorSession" timeout="2400000" 
       onidle="dlgMensajeSessionExp.show()" /> 

<p:dialog header="Sesion Ended" resizable="false" 
       widgetVar="dlgMensajeSessionExp" width="300" height="120" 
       modal="true" closable="false" appendToBody="true"> 
       <center> 
        <h:outputText value="Session Ended" /> 
        <h:form id="sessionForm"> 
         <h:commandLink actionListener="#{user.exit()}"> 
          <h:graphicImage style="border:0px" value="/resources/images/login.png" 
           width="80px" /> 
         </h:commandLink> 
        </h:form> 
       </center> 
      </p:dialog> 

但是會議得到,如果我甚至喪失我在網頁的工作,你有什麼想法,爲什麼會出現這種情況,

Web服務器是的Websphere 7.0.0.17

+0

你如何在頁面上進行交互? idleMonitor是純粹的客戶端事物。如果沒有發送到服務器,則會話通常到期。所以你顯示的代碼和你看到的行爲是預期的 – Kukeltje

+0

@Kukeltje我應該添加然後調用一個方法刷新? – DuSant

+0

你認爲你應該在哪裏添加它,爲什麼?請創建一個[mcve] – Kukeltje

回答

1

以這樣的方式與頁面交互服務器未通過AJAX或交流調用完整的表單發佈不會重置會話服務器端的超時。爲idleMonitor使用ajax事件應該可以做到。

<p:idleMonitor id="idMonitorSession" timeout="2400000" 
      onidle="dlgMensajeSessionExp.show()">  
    <p:ajax event="active"/> 
</p:idleMonitor> 

編輯:我注意到,當鼠標移動時,用戶將被要求與該頁面足以觸發該事件互動「激活」事件不會觸發。如果保持服務器與頁面同步至關重要,則會比此事件創建更頻繁地需要ajax調用。您不必在服務器端調用NOOP操作,設置事件類型就足夠了。

另一種可能性是在發生交互的類型時指示用戶正在使用該頁面時使用ajax事件。例如,在文本區域輸入長消息或過濾大型數據表。

<p:ajax event="filter" listener="#{bean.activeListener}"/> 

無論哪種方式,我們的目標是使服務器知道用戶是沒有用不必要的AJAX事件淹沒服務器確實活躍。

+0

這個工作是否是一個「偵聽器」?理論上,只要''就足夠了。或者甚至''如果'active'已經是''的默認事件。 – BalusC

+0

@BalusC您是正確的,不需要直接操作調用。因爲在我使用的技術堆棧上運行時不允許,所以我無法擺脫。 –