2011-01-09 18 views
1

Wie kann ich den Fortschritt des Servers auf einem Facelet anzeigen? Muss ich ein Servlet schreiben? Oder ist es möglich über ApplicationScoped Bohnen?JSF Progressbar - Serverseitiger Prozess

Ich möchte den Indikator (den Fortschrittsbalken) in einer Ajax-Mode zu aktualisieren.

Antwort

2

Es hängt davon ab, welche Dinge Sie den Fortschritt anzeigen möchten. Im Grunde legen Sie eine Fortschrittsbalkenkomponente in Ihr Facelet (z. B. http://www.primefaces.org/showcase/ui/progressBar.jsf) und binden sie an eine Bean, die die Fortschrittsinformationen bereitstellen kann.

Wie man diesen Fortschritt erhält, ist eine andere Frage völlig und ist außerhalb des direkten Bereichs von JSF. Wenn beispielsweise der Background-Fortschritt ein Quartz-Job war, erinnert sich Ihre Bean möglicherweise an ihre Job-ID und sucht sie jedes Mal mit dem Quartz-Scheduler aus, wenn der Fortschrittsbalken eine Abfrageanforderung sendet. Der Code, der im Quartz-Job ausgeführt wird, muss dann berechnen, wie weit er im Gesamtprozess ist.

Mit Servlet 3.0 und CDIs Event-Bus wäre es auch möglich, den umgekehrten AJAX/Comet zu nutzen und den Fortschrittsbalken auf Update-Ereignisse warten zu lassen, anstatt den Fortschrittsbalken abfragen zu lassen. In diesem Fall müsste Ihr Hintergrundjob regelmäßig Aktualisierungsereignisse veröffentlichen. Dies wäre effizienter, aber immer noch relativ neu und wird nicht immer sofort unterstützt.

+0

Ich habe den Prozess gemacht und ich kann seinen Fortschritt Wert, so denke ich, die erste Lösung ist genug für mich, aber die zweite Lösung ist auch sehr nett und ich kann es irgendwann versuchen. – ehsun7b