2017-04-04 25 views
1

私はPrimefaces 5.1でプロジェクトを開発しています。PrimeFaces p:idleMonitor rendered = "false"は機能しません

私のプロジェクトでは、私のスタートボタンにp:idleMonitor rendered="true"が動作しているので、p:idleMonitorを使用しました。

停止ボタンでp:idleMonitor rendered="false"が機能していないと表示され、p:idleMonitorがまだ処理中です。

サンプルコード:

いるindex.xhtml

<p:panel id="mainPanelId"> 

    <p:commandButton value="Start" update="mainPanelId" action="{Sample.start}"/> 

    <p:commandButton value="Stop" update="mainPanelId" action="#{Sample.stop}"/> 

    <p:idleMonitor timeout="5000" rendered="#{Sample.idleRendered}"> 
      <p:ajax event="idle" oncomplete="PF('dialogId').show();"/> 
      <p:ajax event="active" oncomplete="PF('dialogId').hide();"/> 
    </p:idleMonitor> 

    <p:dialog id="dialogId" widgetVar="dialogId" header="Idle">  
     <p:outputLabel value="Idle Mode Actived!"/> 
    </p:dialog> 

</p:panel> 

Sample.java

class Sample 
{ 
    private boolean idleRendered; 

    public String start() 
    { 
     idleRendered = true; 
     return null; 
    } 

    public String stop() 
    { 
     idleRendered = false; 
     return null; 
    } 
} 
+0

はPF 6.0しようとしたかさえ6.1RC2?もう1つの回避策は、idleMonitorでwidgetVarを使用し、その上で 'pause()'関数を呼び出すことです。 – Kukeltje

答えて

1

あなたが異なっ行う必要がありますいくつかのこと。 p:commandButtonとあなたの豆の空隙方法

によって

  1. 使用<h:form>
  2. 利用のactionListener XHTML

    <h:form> 
        <p:panel id="mainPanelId"> 
         <p:commandButton value="Start" update="mainPanelId" 
          actionListener="#{Sample.start}" /> 
    
         <p:commandButton value="Stop" update="mainPanelId" 
          actionListener="#{Sample.stop}" /> 
    
         <h:outputText value="#{Sample.idleRendered}" /> 
         <p:idleMonitor timeout="5000" rendered="#{Sample.idleRendered}"> 
          <p:ajax event="idle" oncomplete="PF('dialogId').show();" /> 
          <p:ajax event="active" oncomplete="PF('dialogId').hide();" /> 
         </p:idleMonitor> 
    
         <p:dialog id="dialogId" widgetVar="dialogId" header="Idle"> 
          <p:outputLabel value="Idle Mode Actived!" /> 
         </p:dialog> 
        </p:panel> 
    </h:form> 
    

    @Named("Sample") 
    @SessionScoped 
    public class Sample implements Serializable { 
    
        private boolean idleRendered = true; 
    
        public void start() { 
         idleRendered = true; 
        } 
    
        public void stop() { 
         idleRendered = false; 
        } 
    
        public boolean isIdleRendered() { 
         return idleRendered; 
        } 
    
        public void setIdleRendered(boolean idleRendered) { 
         this.idleRendered = idleRendered; 
        } 
    
    } 
    

    更新: は、ここでは、バグのように見えるの回避策です:

    <p:outputPanel rendered="#{Sample.idleRendered}"> 
        <p:idleMonitor timeout="5000"> 
         <p:ajax event="idle" oncomplete="PF('dialogId').show();" /> 
         <p:ajax event="active" oncomplete="PF('dialogId').hide();" /> 
        </p:idleMonitor> 
    </p:outputPanel> 
    
+0

私はh:formとactionListenerをp:commandButtonでも使用しましたが、まだ問題は解決していません。 –

+0

は変更されますか? – jklee

+0

はい、は開始ボタンと停止ボタンをクリックすると動的に変更されますが、stopボタンをクリックするとidleMonitorコンポーネントは停止しません。 –

関連する問題