2016-05-24 11 views
0

primefacesで可能です開始 "ajax status"バッキングビーンのメソッドから?私は次のビューを持っていますprimefaces 5.1 start ajaxStatus preRenderView

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
       xmlns:ui="http://java.sun.com/jsf/facelets" 
       xmlns:h="http://java.sun.com/jsf/html" 
       xmlns:p="http://primefaces.org/ui" 
       xmlns:f="http://java.sun.com/jsf/core" 
       template="/pages/templates/template.xhtml"> 
    <ui:define name="metadata"> 
    <f:event type="preRenderView" listener="#{preloadBean.init}" /> 
    </ui:define>  
    <ui:define name="content"> 
    <h:form id="form" > 
    <p:growl id="growl" /> 
    <p:commandButton id="btn" value="Trigger ajaxStatus" actionListener="#{preloadBean.buttonAction}" /> 
    <f:facet name="start"> 
     <p:graphicImage name="images/ajaxloadingbar.gif" /> 
    </f:facet> 
    <f:facet name="complete"> 
     <h:panelGrid columns="4"> 
      <p:outputLabel value="#{preloadBean.nomeCognomeVis} - #{preloadBean.poloVis}" style="font-weight:bold" /> 
      <h:outputText value="Aggiornamento delle: #{preloadBean.ultimoAggiornamento}"></h:outputText> 
      <p:commandButton actionListener="#{preloadBean.buttonAction}" id="aggiornaDati" update="growl" value="Aggiorna Dati" title="Aggiorna Dati" styleClass="ui-priority-primary" /> 
      <p:commandButton actionListener="#{preloadBean.buttonAction}" id="impersonifica" update="growl" value="Ut.P" title="Inpresonifica utente" styleClass="ui-priority-primary" /> 
     </h:panelGrid> 
    <p:dataTable var="record" value="#{preloadBean.records}" paginator="false" id="mainTable">   
     <p:column headerText="Polo" sortBy="#{record.polo}" filterBy="#{record.polo}" filterStyle="display:none"> 
      <h:outputText value="#{record.polo}" /> 
     </p:column> 
     <p:column headerText="Operatore" sortBy="#{record.operatore}" filterBy="#{record.operatore}" filterStyle="display:none"> 
      <h:outputText value="#{record.operatore}" /> 
     </p:column> 
     <p:column headerText="Aperti" sortBy="#{record.totaleAperti}" filterBy="#{record.totaleAperti}" filterStyle="display:none"> 
      <h:outputText value="#{record.totaleAperti}" /> 
     </p:column>  
    </p:dataTable> 
    </f:facet> 
</p:ajaxStatus> 
    <p:ajaxStatus onstart="PF('statusDialog').show()" onsuccess="PF('statusDialog').hide()" /> 
    <p:dialog widgetVar="statusDialog" modal="true" draggable="false" closable="false" resizable="false" showHeader="false"> 
    <p:graphicImage name="images/ajaxloadingbar.gif" /> 
</p:dialog> 
    </h:form>  
    </ui:define> 
</ui:composition> 

"btn" commandButtonをクリックしたときにのみ有効です。 ページがリフレッシュされるとき、または最初のアクセス時にajaxステータスをロードしたい。ここで

答えて

0

は、あなたのHTMLのフッターに配置する例です。

<p:ajaxStatus onstart="PF('statusDialog').show();" 
       oncomplete="PF('statusDialog').hide();" 
       onerror="alert('Error msg. Please try again!');" /> 

<p:dialog widgetVar="statusDialog" modal="true"> 
    <h:form prependId="false"> 
     <p:outputLabel value="Processing..." style="display: block; margin: 10px;" /> 
     <p:graphicImage library="images/icones" name="glow-ring.gif" /> 
     <p:outputLabel value="Wait!" style="display: block; margin: 10px;" /> 
    </h:form> 
</p:dialog> 

あなたは、AJAXリクエストを呼び出すときに、ダイアログにのみ開始されます。

したい場合のみ、あなたは、この使用することができますwhitout任意のAJAX要求、起動時にダイアログを表示:問題はリモートコマンドリスナーが2回呼び出されていることである

<p:remoteCommand name="onload" autoRun="true" process="@this" immediate="true" 
       onstart="PF('statusDialog').show();" 
       oncomplete="PF('statusDialog').hide();" /> 
+0

を! – Andrea

+0

Andrea、** remove ** 'name =" onload "(または名前の変更)はこの問題を解決しますが、これを行う最良の方法は今は思い出せません。したがって、あなたが期待どおりに動作しない場合**多分** autoRun = "false"を設定することで解決できます。 **ページロード時にajaxステータスを開始するためには、これらのコマンドのうちの1つが必要なので、ソリューションの1つを選択する必要があります。 –

+0

あなたは素晴らしいです!ありがとう!!!!私はname = "onload"を削除しました。 – Andrea

関連する問題