View Update aus ManagedBean (ApplicationScope)


#1

Hi @ all,

stehe grad vor einem Problem wo ich nicht genau weiß wie man das Lösen kann.

Also, es geht um eine Webapplikation mit JSF, Primefaces und EclipseLink auf einem Glassfish.
Ich habe einen Eintrag mit Name und Beschreibung. Wenn jemand das bearbeiten möchte, kann er das tun, es wird nur in einer ApplikationScope Bean in einer LIste festgehalten und es kann kein anderer dieses Bearbeiten. Das funktioniert testweise auch schon. Auf der Startseite werden die Einträge angezeigt, die gerade bearbeitet werden. Soweit so gut. Jetzt sind 2 User auf der Startseite, der eine macht gar nichts, der andere möchte einen Eintrag bearbeiten. Wenn er dieses tut, wird natürlich bei den anderen dieses nicht ohne refresh angezeigt. Kann man die <p:dataTable> von der Backingbean updaten? Habs schon mit

        context.update(":ge:gesperrteEintraege");``` probiert, hat aber nichts gebracht. Ich hoffe ihr wisst was ich meine und könnt mir weiterhelfen :)

#2

Du möchtest so etwas wie ein Poll oder besser Push.

Ich habe das bisher nur mit Richfaces gemacht, aber http://www.primefaces.org/showcase/push/index.jsf sollte Dir wahrscheinlich helfen.

Damit kannst Du Serverseitig die UI trickern und diese lädt die Daten nach.


#3

Wenn es eine kleine Applikation ist, wie sym schriebm p:poll
wenn es um mehrere hunderte bis tausende User geht, Websockets

VG Sence


#4

Ich glaube, der Push von Primefaces nutzt Atmosphere und kann dann auch Websockets, oder?


#5

ups du schriebst ja push und nicht pool grins
jap da stimme ich dir zu, my mistake


#6

Vielen Dank für eure Hilfe, werde mich dann mal im Push einlesen :slight_smile:


#7

Hi nochmal,

habe mich mal eingelesen und es funktioniert auch, jedoch tritt ein Fehler auf:

Und zwar wenn ich die Applikation starte, wird endlos die Exception geworfen:
SEVERE: java.lang.IllegalStateException: Request is within the scope of a filter or servlet that does not support asynchronous operations

Habe etwas gegooglet, da stand oft das man bei Filtern async-support auf true setzen muss. Habe ich getan jedoch immer noch der gleiche Fehler. Dachte dann das liegt am Primefaces FileUpload Filter, jedoch auch wenn ich diesen rausnehme kommt der Fehler. Habe mittlerweile alle Filter herausgenommen und immer noch das gleiche Verhalten. Komisch ist, sobald ich den Browser aktualisieren, hört die Exception auf und es funktioniert alles so wie ich es mir Vorstelle (Views werden geupdatet).

Weiß jemand Rat?