3 Stimmen

Erzeugen eines Pop-ups in JSF

Ich bin neu in der JSF-Welt, bitte helfen Sie mir bei der Erzeugung eines Pop-up-Fensters auf der Seite.

Hier ist meine Anforderung, die ich mit einer Liste von Links in meiner Master-Seite (Eltern) auf Klick von jedem Link, den ich brauche, um ein Pop-up zu zeigen, die einige Details enthält, die ich brauche, um von DB in der Pop-up-mbean zu erhalten. Ich werde einige Schaltflächen in meinem Pop-up haben und für jede Aktion werde ich eine entsprechende DB-Operation haben. Ich habe verschiedene Möglichkeiten ausprobiert und bin gescheitert.

Das Problem, mit dem ich konfrontiert bin, ist, dass es beim ersten Laden des Pop-ups gut läuft und die Werte wie erwartet projiziert werden. Aber zum zweiten Mal zeigt es die neuen Werte in der Init-Funktion und ich kann nicht sehen, die neuen Werte auf dem Bildschirm stattdessen seine Anzeige der ersten Pop-up-Werte.

1voto

Mark Punkte 16402

Haben Sie Ihre faces-config.xml-Datei überprüft, um sicherzustellen, dass Ihre Bean im Anfragebereich ist?

<managed-bean-scope>request</managed-bean-scope>

Wenn sich die Bean im Sitzungs- oder Anwendungsbereich befindet, wird die Bean nicht jedes Mal neu erstellt, wenn Sie die Seite aktualisieren, so dass sich die Werte in der Bean nicht ändern würden.

0voto

SCdF Punkte 53953

Also (wenn ich Ihr Problem richtig verstehe) das Problem ist, dass das zweite Mal die geänderten Werte der Bohne sind nicht ihren Weg zum vorderen Ende machen?

Ich bin überrascht, dass sich dies ändert, je nachdem, ob es sich um ein Pop-up-Fenster handelt oder nicht.

Einige Gedanken:

  • Wenn Sie dieses Pop-up öffnen, rufen Sie vermutlich nur eine Seite auf, d. h. http://localhost:8080/myApp/myPopupURL ?
  • Ist die mbean (wenn Sie mbean sagen, meinen Sie ein Java-Objekt, auf das Sie mit #{name.javaBeanField} richtig?) Anfrage oder Session-bezogen?
  • Was tun Sie, um dieses Ergebnis zu erzielen? Klicken Sie auf den Pop-up-Link und dann erneut auf den Link (in der Erwartung, dass das bereits geöffnete Pop-up aktualisiert wird)? Oder klicken Sie auf den Link, schließen das Popup-Fenster und klicken erneut auf den Link? Oder klicken Sie auf den Link und aktualisieren dann das Popup-Fenster?

Ich habe im Moment kein funktionierendes JSF-Setup, aber wenn ich es hätte, würde ich versuchen, eine einzelne JSF-Seite mit einem Link zu erstellen. Dieser Link würde ein Popup öffnen, das auf eine statische URL verweist (wie das obige Beispiel). Die statische URL würde auf eine wirklich einfache mbean zuordnen, die etwas einfaches tat, wie zeigen eine int, die eine zufällige Zahl zwischen 1 und eine Million ist.

Wenn das funktionieren würde, könnte man zumindest ausschließen, dass etwas anderes nicht in Ordnung ist. Ich habe manchmal Probleme mit JSF zufällig essen Ausnahmen und mit der Seite aktualisieren mit alten Werten (da der Lebenszyklus nicht abgeschlossen ist) hatte.

0voto

Raibaz Punkte 8305

Nicht wirklich sicher, wenn es Standard JSF (ich bin ziemlich sicher, es ist nicht, eigentlich), aber Sie sollten eine isPostBack() Methode in Ihrem Backing Beans, die Sie wissen, wenn Sie die Seite zum ersten Mal laden oder laden Sie es nach einer Aktion ermöglicht; wenn Sie die isPostBack() Methode verwenden könnte, würden Sie in der Lage sein, die Werte aus der DB nur auf der ersten Seite laden, ohne die geänderten Werte nach den Aktionen zu überschreiben.

0voto

Loki Punkte 28114

Scheint mir mit dem Cache zusammenzuhängen, aber überprüfen Sie Folgendes:

  • Haben Sie das Debugging durchgeführt und sich die richtigen Werte in der Bean;
  • Haben Sie sich vergewissert, dass es sich um das Formular der Bohne dass die Werte abgeholt werden;
  • Sind Sie sicher, dass der Browser beim zweiten Mal auf den Server das zweite Mal aufruft; und
  • Haben Sie die Protokolle analysiert (und aktiviert!) und sich vergewissert, dass keine Fehler vorhanden sind?

0voto

Averroes Punkte 3988

Es wäre nützlich zu wissen, wie Sie das Popup anzeigen und ob Sie dafür eine JSF-Komponente verwenden. Wenn Sie nur ein verstecktes Div (oder etwas, das Sie einmal laden, wenn die Master-Seite lädt) zeigen, können Sie nicht gerendert werden, dass Div wieder, so dass die Daten nicht aktualisiert wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X