Body onUnload Java Methode aufrufen

Markus138

Mitglied
Hallo,

Ich würde gern beim schließen eines Fenster (mit x) eine Java Methode aufrufen. Das schaffe ich mittels dem Body Tag onunload. Problem dabei ist, dass diese Methode auch aufgerufen wird, wenn ich in dem Formular irgendeinen Button drücke. Gibt es hier eine andere Möglichkeit dies zu realisieren, sodass wirklich nur beim schließen des Fensters mit X diese Methode aufgerufen wird?
 
Bist du sicher, dass du nicht eine JavaScript Funktion aufrufen willst?

PS: Mit wäre keine Möglichkeit dazu bekannt eine Unterscheidung einzuführen.
 
Ich mache das momentan so:

JavaScript Funktion:

HTML:
function loadValues() {
	document.getElementById('editForm:loadValues').click();
}


JSP Code Abschnitt:


HTML:
<body onUnload="loadValues();">
...

<h:commandButton id="loadValues" styleClass="hidden" tabindex="-1"
	action="#{userBean.loadValues}" image="/img/invisible.png" />

so wird mir beim schließen des Fensters (und leider auch beim drücken eines anderen Buttons) die Methode loadValues in der Bean "userBean" aufgerufen
 
Also irgendwie ist mir dein Code nicht klar, vermutlich liegt es daran dass ich keinen Sinn darin finde beim Schließen eines Fensters Daten zu laden aber ok.

Wie wäre es das Target des Event-Objektes zu überprüfen? Vielleicht kannst du dann Buttons einfach herausfiltern? (Gibt es bei onUnload ein Event-Objekt? Ka)
 
Also erstmal ist das ja ein grandioses Beispiel für eine absolut diffus gestellte Frage. Offenbar handelt es sich um ein JSF-Problem, davon ist in der Frage gar keine Rede.

Ansonsten kommts mir ziemlich unsauber vor, auf diese Art per javascript-Event eine java-Funktion aufzurufen, die eigentlich die action-Methode eines CommandButton ist.

Ich vermute, es geht darum, sicherzustellen, dass wenn ein User die Anwendung nicht ordnungsgemäß beendet, sondern einfach das Browserfenster schliesst, irgendwelche Daten wieder zu resetten. In diesem Fall würde ich aber eher versuchen, das Timeout der HTTP-Session (und damit das Ende des Lebenszyklus von Session Scope-Beans) abzufangen, und die Daten da dann wieder zu resetten.
 
Wenn es das ist dann würde ich einfach beu onUnload einen HttpXmlRequest abschicken mit dem Befehl reset oder so. Anhand der SessionId kann dann die Session aufgeräumt werden und zwanghaft beenden. Sollte das nicht funktionieren (weil laut Specification Browser nicht gezwungen sind an diesem Punkt noch Daten zu senden) kann man, wie du sagst bei Sessionablauf noch aufräumen.
 
keine Ahnung was an meinem ursprünglichen Posting nicht verständlich war. Ich wollte lediglich ein paar Aufräumarbeiten nach dem schließen des Fensters durchführen. Dies habe ich jetzt aber schon auf andere Art und Weise lösen können.

Zum Thema wie ich die Java Methode starte: nunja, wenn ihr Vorschläge habt wie ich das eleganter lösen kann - nur her damit, mir war keine andere Möglichkeit bekannt.
 
Steht doch direkt im Post darüber und darüber. Und was daran nicht verständlich war? So ziemlich alles, mir war bis vorhin immer noch nicht genau klar was du damit eigentlich erreichen wolltest.
 
Nuja, Du schreibst "schliessen des Fensters". Kein Wort, welches Fenster. Fenster einer Anwendung, Browserfenster?

Weiterlesen, offenbar hats was mit HTML zu tun. Es geht also wohl ums Browserfenster. Hoppla, da dann eine "Java-Funktion" aufrufen? Hat er was falsch verstanden? Meint er Javascript?

Formular... Button.. offenbar gehts um HTML-Formulare, er meint wohl wirklich Javascript, nicht java.

Vier Antworten später: OH! Es handelt sich um eine JSF-Anwendung! Davon war bisher nicht die Rede. Und ja, er will wirklich eine java-Funktion aufrufen.

Ist immer noch unklar, was an Deinem ersten Posting unklar ist?
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben