Navigation verhindern unter bestimmten Voraussetzungen

DaBe1812

Bekanntes Mitglied
Moin Gemeinde,

Ich habe mal eine Frage zur clientseitigen Validierung (denke ich mal).

In meiner Anwendung soll der User demnächst einen Unterpunkt bekommen, in dem er Daten anschauen und pflegen kann.
Dazu habe ich auf der "Pflegeseite" eine dynamische Tabbed-View, mit einer Suchmaske und dann kann der Benutzer ein Tab pro Datensatz öffnen.
Diese Dynamische Tabbed-View speist sich aus einer Liste mit "OpenTab"-Objekten.
Dieses Objekt hat folgende Eigenschaften:
Java:
public class OpenTabObj {
    
    private String title;
    private String subpage;
    private SearchableEntity content;
    
    private boolean closable;
    private boolean editable;
    
    private boolean editor = false;
    private boolean dirty = false;

    public OpenTabObj(String title, String subpage, SearchableEntity content, boolean closable, boolean editable) {
        this.title = title;
        this.subpage = subpage;
        this.content = content;
        this.closable = closable;
        this.editable = editable;
    }

    public String getTitle() {
        if(editor) return title + " *";
        return title ;
    }

    public boolean isClosable() {
        if(editor) return false;
        return closable;
    }
}

D.h. ich weiß, welches Tab der Benutzer auf editieren gestellt hat und wenn mir eine gute Lösung einfällt, dann weiß ich auch, ob er wirklich etwas verändert hat. Aktuell gehen wir mal davon aus, dass wenn editor == true, dann muss auch gespeichert werden. Wenn gespeichert wurde, dann setze ich editor wieder auf false.

Jetzt ist die Frage, kann ich, wenn der Benutzer in der Navigation etwas anklickt, bevor Serverseitig irgendein Wechsel angestoßen wird, zum einen eine Warnmeldung öffnen, dass es ungespeicherte Änderungen gibt und dann den Benutzer entscheiden lassen, ob es ihm egal ist, oder ob er die Navigation abbrechen möchte?
Die Goldrand-Lösung wäre dann wenn dies sogar bei Eingabe einer URL, oder klick auf den Zurück-Knopf klappen würde.

Gibt es dafür Möglichkeiten?
 

Blender3D

Top Contributor
Jetzt ist die Frage, kann ich, wenn der Benutzer in der Navigation etwas anklickt, bevor Serverseitig irgendein Wechsel angestoßen wird, zum einen eine Warnmeldung öffnen, dass es ungespeicherte Änderungen gibt und dann den Benutzer entscheiden lassen, ob es ihm egal ist, oder ob er die Navigation abbrechen möchte?
Wieso sollte das serverseitig passieren?
1) Der Benutzer ändert etwas am augenblicklichen Objekt.
2) Jetzt will er eine Url eingeben oder er möchte zu einem anderen Objekt navigieren.
3) Der Client gibt eine Warnmeldung aus und stellt ihn vor die Wahl entweder die Änderungen zu speichern oder sie zu verwerfen.
 

Oneixee5

Top Contributor
Von was für einer Umgebung/Programmiersprache sprichst du überhaupt?
In JavaScript gibt es:
Javascript:
addEventListener("beforeunload", (event) => {});
onbeforeunload = (event) => {};
Hier könntest du dein: editor == true abfangen. Das wäre ein übliches Vorgehen.
Möglich wäre auch:
Javascript:
addEventListener("hashchange", (event) => {});
onhashchange = (event) => {};
wenn die typischen URL's aus einer Spring-Anwendung genutzt werden.
In React/Angular/Vue gibt es noch weitere Möglichkeiten.

Das spielt aber überhaupt nur eine Rolle, wenn man sowas wie einen Speichern-Button benötigt/verwendet. Das macht aber kein Mensch mehr auf diese Art. Normalerweise Speichert man automatisch wenn blur() ausgelöst wird.

Evtl. verstehe ich das auch alles falsch. Da in deiner Beschreibung gar nicht klar wird, was du überhaupt verwendest. Ich habe mich nur an "clientseitigen Validierung" orientiert.
 

DaBe1812

Bekanntes Mitglied
Manchmal vergess ich bei aller Beschreibung die Grundlagen mit rein zu bringen.
Also es geht um eine Anwendung in Java 11 auf einem Websphere Server. Frontend ist mit Primefaces in JSF gelöst.
Das Automatische Speichern finde ich bei solchen Daten nicht so gut, aber ich bin nur die Technik, vielleicht kann man das mit den Usern nochmal besprechen. In der aktuellen Anwendung haben die einen Speichern Knopf, also wollte ich ihnen den auch hier lassen.
Was ist denn das blur() Event? an welcher Stelle des Lifecycle droppt das denn?
Die Eventlistener klingen aber erstmal vielversprechend. Ich habe zwar aktuell so weit es geht auf Frontend-Scripting verzichtet, aber das wird jetzt sowieso mehr kommen, weil einige Seiten interaktiver werden sollen, da wird es sich dann sowieso nicht mehr vermeiden lassen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
NoXiD jsf 2.1 navigation rule doesn't work Allgemeines EE 4
0 JSF fehlerhafte navigation Allgemeines EE 3
F JSF Navigation auf vorhergehende Seite(n) Allgemeines EE 14
N zugriff auf sämtliche navigation rules Allgemeines EE 6
S JSF Navigation - Alternative zu Spring Webflow Allgemeines EE 6
S JSF - Aktion und Navigation in einem? Allgemeines EE 3
S JSF: Bei Navigation Bilder / Styles nicht mehr verfügbar Allgemeines EE 1
T JSF/MyFaces und Navigation Allgemeines EE 9
L JPA Verhindern von: attempted to assign id from null one-to-one property Allgemeines EE 5
B IMAP Anmeldung in EJB - Objekt speichern und ständige Anmeldung verhindern Allgemeines EE 18
M EJB Löschen von DB-Daten beim Deployen verhindern Allgemeines EE 2
M JSF: Wie Refresh der Seite bei Click auf Button verhindern? Allgemeines EE 4
S Struts - Direktaufruf eines URL verhindern Allgemeines EE 11
thor_norsk Glassfish Server unter Windows startet nicht! Allgemeines EE 20
feinperligekohlensaeure JSF Keine Tabelle / Buttons werden unter Windows angezeigt + Apple schon Allgemeines EE 9
M Glassfish Deployment-Problem unter Eclipse Allgemeines EE 0
J Logging und Monitoring unter Tomcat Allgemeines EE 2
H Bean läuft unter GlassFish, aber JBoss nicht Allgemeines EE 5
D HTTPS unter JAX-WS verwenden Allgemeines EE 7
E Servlet unter mehreren Adressen Allgemeines EE 16
ruutaiokwu ejb hot deployment unter jboss 4.2.3 Allgemeines EE 7
M Messwertarchiv unter J2EE Allgemeines EE 4
I Web-Projekt zum Laufen bringen unter Eclipse Allgemeines EE 3
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
G JSF 1.2 unter Netbeans 6 mit Tomcat 6.0 ->Navigationsprob Allgemeines EE 6
M embedded jboss unter eclipse 3.3 Allgemeines EE 2
A Wie werden Template Engines unter J2EE umgesetzt? Allgemeines EE 3
G Tomcat unter Eclipse starten Allgemeines EE 9
D JBOSS unter Eclipse Allgemeines EE 2
H Hilfe! Wie erstelle ich einen Interceptor unter jBoss? Allgemeines EE 3
A Tomcat undeploy unter Windows klappt nicht wegen struts.jar Allgemeines EE 2
K war-Archiv unter Tomcat neu entpacken lassen Allgemeines EE 3
S .war Datei erzeugen unter Eclipse Allgemeines EE 2
E J2EE unter Eclipse Allgemeines EE 6
C Grafische Komponenten unter Struts jsp (Liste) Allgemeines EE 4
C JBoss Server unter Eclipse 3.1 Allgemeines EE 2
D JAAS unter JBoss Allgemeines EE 5
FsMarine Probleme beim ausführen von JSP dateien unter Tomcat Allgemeines EE 4
T Servlet-Mapping und Welcome-File-List unter Websphere? Allgemeines EE 2
K Anfängerfrage zu JDBC installation unter TOMCAT 5.0 Allgemeines EE 4
daLenz jboss 3.2.5 konfiguration unter eclipse Allgemeines EE 2
M Problem mit Roles unter JBoss 3.2.5 Allgemeines EE 3

Ähnliche Java Themen

Neue Themen


Oben