2016-08-09 34 views
-1

Habe folgendes Problem: Es gibt p: Remotecommand dass faule Lasten p: Datatable nach Laden der Seite, aber die Ladeanzeige von „p: ajaxStatus“ nicht während der Zeit des Ajax-Request ...Wie mache ich "p: remoteCommand" um "p: ajaxStatus" auszulösen?

gezeigt Wie kann "p: ajaxStatus" auf der Seite angezeigt werden, wenn p: remoteCommand eine Anforderung zum verzögerten Laden der Daten sendet?

-Code auf der Seite:

<h:form id="form"> 

    <p:remoteCommand name="loadLazyData" action="#{crmBackingBean.crmOnControlLazyInit}" autoRun="true" process="@this" update="dtCrmOnControl" /> 

    <p:dataTable id="dtCrmOnControl" var="rowData" value="#{crmBackingBean.crmOnControlLazy}" widgetVar="dtCrmOnControl" rows="#{crmBackingBean.crmDTonControlRows}" paginator="true" ..... lazy="true" > 
     ....................................................... 
    </p:dataTable> 

</h:form> 

Ich verwende Atlas Thema, p: ajaxStatus in seinem ursprünglichen Platz, in template.xhtml befindet:

Danke
<p:ajaxStatus style="width:40px; height:40px; position:fixed; right:30px; bottom:30px; z-index:999999;"> 
    <f:facet name="start"> 
     <i class="fa fa-circle-o-notch fa-spin Green Fs40"></i> 
    </f:facet> 
    <f:facet name="complete"> 
     <h:outputText value="" /> 
    </f:facet> 
</p:ajaxStatus> 

!

Versionen: PrimeFaces 6.0.2; PrimeFaces Atlas Theme 1.1.1; GlassFish 4.1.1 mit JSF 2.2.12 (Mojarra)

+0

es, wenn Sie nicht funktioniert benutze '' und klicke manuell auf die Schaltfläche? Funktioniert es, wenn Sie den '' in demselben Formular verwenden? – Kukeltje

+0

@Kukeltje, danke, die ' funktioniert, und tatsächlich hat es mich in die Lage versetzt, die Lösung zu finden: Ich benutze Standard-PrimeFaces-Atlas-Thema und seine Standard-Vorlage enthält '' -Tag nach ' , also hört ajaxStatus einfach "remoteCommand" einfach nicht, da es nach remoteCommand geladen wurde (eigentlich nicht sicher, ob es ein Bug oder ein Feature ist ...) Also war mein Fix im Grunde nur, um '' zu verschieben oben und setzen Sie es als erstes Tag nach '' [code] (http://forum.primefaces.org/viewtopic.php?f=3&t=46591) –

+0

Bitte erstellen Sie dies als eine Antwort, aber stellen Sie sicher, dass Sie die hinzufügen richtige Versionsinfo sowohl zur Frage als auch zur Antwort! Und bitte füge einen Fehler im PF issuelist ein. Wenn es kein Fehler ist, sollte es zumindest dokumentiert werden! – Kukeltje

Antwort

0

Die Lösungen folgt:

Der Tag <p:ajaxStatus> sollte auf der XHTML-Quellseite VOR dem Tag <p:remoteCommand> platziert werden.

Umwelt:

  • PrimeFaces 6.0.2
  • PrimeFaces Atlas Theme 1.1.1
  • Glassfish 4.1.1 mit JSF 2.2.12 (Mojarra)
-1

Es scheint, als ob Sie ein paar wichtige Definitionen verpasst haben. Wie sollte Ihr Status feststellen, dass etwas unternommen wird? Ich nehme an, Sie möchten während des Wartens einen Dialog anzeigen und das Design in ajaxStatus konfigurieren, ist das korrekt?

Wenn ja, empfehle ich Ihnen, einen eigenen Dialog von <p:dialog> zu erstellen und fügen Sie die onstart und onsuccess Attribute zu Ihrem ajaxStatus wie in Primefaces Vitrine beschrieben: http://www.primefaces.org/showcase/ui/ajax/status.xhtml

Es wird so etwas wie

<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="waiting_picture.gif" /> 
</p:dialog> 
sein

Sie können diese Lösung problemlos mit einer Datentabelle/einem Paginator kombinieren.

Ich hoffe, das hilft!

EDIT: Warum definieren Sie nicht die Zeilen pro Seite, um Lazy Loading zu unterstützen? http://www.primefaces.org/showcase/ui/data/datatable/paginator.xhtml

EDIT 2: Sie können auch Ihre loadLazyData Methode Start aufrufen:

<p:ajaxStatus onstart="loadLazyData" /> 

oder so etwas wie ...

+0

1: _ "Wie sollte Ihr Status feststellen, dass eine Aktion stattfindet?" _ Nein, die Dokumentation gibt Folgendes an: ** "AjaxStatus ist ein globaler Indikator, der Rückmeldungen über die laufende Ajax-Anfrage gibt." ** 2: _ " Ich nehme an, Sie möchten während des Wartens einen Dialog anzeigen und dessen Formatierung in ajaxStatus konfigurieren, ist das korrekt? "_ Wird nur benötigt, wenn Sie explizit wollen. – Kukeltje

+0

_" EDIT: Warum definieren Sie die Zeilen nicht? pro Seite, um Lazy Loading zu unterstützen? "_ lädt es immer noch nicht nach dem einfachen Laden der Seite, aber während ... _" EDIT 2: Sie können Ihre loadLazyData-Methode auch beim Start aufrufen: "_ So wollen Sie (erneut) laden die Daten über jeden Ajax-Aufruf von jeder Komponente auf der Seite? Ich würde nicht denken. – Kukeltje

+0

chaeschuechli, danke für deinen Beitrag! ... das einzige Problem, dass ich nach einer etwas anderen Lösung suche ... Re Fragen aufgeworfen - ich stimme Kukeltje absolut zu. –