2016-06-07 17 views
0

Ich verwende ein a4j: Poll-Tag, um meine Statusseite alle 5 Sekunden zu aktualisieren. Auf dieser Seite werden die Jobs angezeigt, die für einen bestimmten Benutzer ausgeführt werden. Es gibt auch einen Superuser, der zwischen den Benutzern wechseln kann.Mit a4j: poll, wie bekomme ich es zum erneuten Scannen, wenn die Seite gerendert wird?

<a4j:poll actionListener="#{searcher.checkStatus}" interval="5000" render="queueInfo,pg" id="poll"/> 

Wenn QA bemerkt, dass, wenn der Super-User Benutzer geändert und angezeigt dann die Statusseite, wurde der Status des letzten Benutzers angezeigt, bis die 5 Sekunden waren und die Seite an den richtigen Benutzer aktualisiert. Also habe ich dem Poller das Immediate = "true" -Attribut hinzugefügt und dachte, dass dies aktualisiert würde, wenn die Seite angezeigt würde. (QueueInfo ist der output, die die Größe der Warteschlange zeigt. Pg die Datatable ist, dass die Jobs angezeigt werden, die Warteschlange gestellt werden.)

<a4j:poll actionListener="#{searcher.checkStatus}" immediate="true" interval="5000" render="queueInfo,pg" id="poll"/> 

dies das Problem nicht beheben. Die Statusseite zeigt immer noch die alte Seite für 5 Sekunden an und aktualisiert sich dann.

Jeder hat Ideen, wie dies funktioniert?

Antwort

0

Vom docs:

sofort - Markierung, die angibt, dass, wenn diese Komponente durch den Benutzer aktiviert wird, Meldungen sofort an interessierte Zuhörer und Aktionen geliefert werden (das heißt, während der Antrag Anwenden Werte Phase) eher als bis zum Aufrufen der Anwendungsphase warten.


Sie werden das Intervall manuell ändern müssen, die Abfrage starten und zurücksetzen, z.B .:

<a4j:ajax oncomplete="#{rich:component('poll')}.interval = 100; #{rich:component('poll')}.startPoll(); #{rich:component('poll')}.interval = 5000;" … /> 
+0

Tricky. Ich werde es versuchen. –

+0

Was wäre ein geeignetes Element, um das a4j hinzuzufügen: ajax? Nicht der Poller, oder? –

+0

Was auch immer Sie verwenden, um den Benutzer zu wechseln, wenn es eine Ajax-Komponente ist, können Sie einfach die 'oncomplete' darauf setzen. – Makhiel