JSF und Browser Refresh

R

RefreshRalf

Gast
Hallo,

ich möchte, eine Backing Bean Methode nur ausführen, wenn der Browser refreshed worden ist (bspw. wenn man F5 gedrückt hat).

public void wasRefreshed(Event e){
System.out.println("Sie haben den Browser aktualisiert.");
}

Wisst ihr wie/ob das möglich ist?

Danke,
Ralf
 

KYLT

Mitglied
Hi,nur um nochmal sicher zu gehen, geht es dir darum eine Methode zu schreiben, die nicht beim Seitenaufruf selbst, sondern nur bei refresh ausgeführt wird, oder geht es dir darum , sobald der Browser einen Refresh ausführt die Daten für etwas neu zu laden?
 

Deadalus

Bekanntes Mitglied
Ja denke mal das sollte gehen. In der <f:view> Komponente gibt es die Attribute:

afterPhase=""
beforePhase=""

Da solltest du eine Methode in einem BackingBean aufrufen können. Die Methode braucht dann aber keinen ActionEvent sondern einen PhaseEvent. Sollte in etwas so aussehen:


Java:
public void wasRefreshed(PhaseEvent e) {
       System.out.println("Sie haben den Browser aktualisiert.");
    }
 
R

RefreshRalf

Gast
@KYLT: Ich meine einfach den Refresh, den man manuell ausführt

@Deadalus: Hab ich probiert, die Methode wird aber bei keinem der beiden Attribute aufgerufen :(

(Bin morgen wieder da)
 

KYLT

Mitglied
Versuch es doch mal:
Code:
<f:event type="preRenderView" listener="#{bean.method}"/>
 
Zuletzt bearbeitet:
R

RefreshRalf

Gast
Hmm. Das ist jetzt MyFaces, oder? Ich verwende bis jetzt eigentlich die RI, kann aber auf MyFaces wechseln, wenn das kompatibel ist. Ist es?
 

MrWhite

Bekanntes Mitglied
HTTP ist zustandslos! Ob der User den Refresh veranlasst hat ist also serverseitig nicht zu unterscheiden von einem normalen Request.

Um den Refresh dem Server mittzuteilen, müsste man sich schon in den Aktualisierungs-Event des Browsers einhaken, z.B. mit Javascript in den Druck der F5 Taste und dann einen entsprechenden Request-Parameter mitsenden.
 

Ähnliche Java Themen

Neue Themen


Oben