Success Message nach Page Refresh [F5] vermeiden

04.
Januar
2021
Veröffentlicht von: Christian Klose

Nach dem Speichern einer Änderung in APEX wird üblicherweise eine Erfolgsmeldung angezeigt. Wenn der Benutzer im Anschluss die Seite aktualisiert [F5], erscheint die Erfolgsmeldung erneut. Dies führt mit Sicherheit beim Anwender zu Verwirrung.

Dieser Tipp funktioniert ab der APEX Version 5.x.

Unterstütze Browser:

  • Firefox
  • Chrome
  • Edge

Wie das Verhalten geändert werden kann, wird hier beschrieben:

Aus der Tabelle Error-Log wollen wir einen oder mehrere Datensätze löschen.
Beispiel:

null


Der erste von acht Datensätzen wird gelöscht:

null

Das Löschen hat funktioniert und wird auch bestätigt. Es werden noch sieben Datensätze angezeigt.

Beim Refresh [F5] erscheint die Erfolgsmeldung aber wieder. Warum?

Schauen wir uns die URL etwas genauer an:

URL vor dem Löschen:

https://localhost:8443/ords/mqs_ltm/r/mqsc-db-control/applikationslog?session=1254743865074


URL nach dem Löschen:

https://localhost:8443/ords/mqs_ltm/r/mqsc-db-control/applikationslog?session=1254743865074&success_msg=PHNwYW4gc3R5bGU9ImNvbG9yOndoaXRlIj5FcyB3dXJkZSAxIFplaWxlIGdlbMO2.,c2NodDwvc3Bhbj4~%2FBc478pLiEH9QRrnlXd4HLazL8mNHJk_BA05oFstnWHmFafvagdnJvkGL251JHllCCG96nNCznYlgD-I4u-HUsw


URL nach dem Refresh [F5]:

https://localhost:8443/ords/mqs_ltm/r/mqsc-db-control/applikationslog?session=1254743865074&success_msg=PHNwYW4gc3R5bGU9ImNvbG9yOndoaXRlIj5FcyB3dXJkZSAxIFplaWxlIGdlbMO2.,c2NodDwvc3Bhbj4~%2FBc478pLiEH9QRrnlXd4HLazL8mNHJk_BA05oFstnWHmFafvagdnJvkGL251JHllCCG96nNCznYlgD-I4u-HUsw

Die success_msg ist immer noch vorhanden.
 

Die Success-Message wird über den Parameter success_msg in der URL angetriggert. Damit die Erfolgsmeldung beim Page Reload nicht mehr erscheint, müssen wir den Parameter loswerden. Das erfolgt mit ein paar Zeilen Java Script:

Auf der Page, unter Function and Global Variable Declaration wird die Java Script Funktion removeParam hinzugefügt:

null

null

Code:

function removeParam(key, sourceURL) {
    var rtn = sourceURL.split("?")[0],
        param,
        params_arr = [],
        queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
    if (queryString !== "") {
        params_arr = queryString.split("&");
        for (var i = params_arr.length - 1; i >= 0; i -= 1) {
            param = params_arr[i].split("=")[0];
            if (param === key) {
                params_arr.splice(i, 1);
            }
        }
        rtn = rtn + "?" + params_arr.join("&");
    }
    return rtn;
}

On Page Load erstellen wir eine dynamic Action, mit dem Namen removeParam_success_msg:

Code:

window.history.pushState("object or string", "Title", removeParam("success_msg", window.location.href));


Die URL schaut nun wie folgt aus:

https://localhost:8443/ords/mqs_ltm/r/mqsc-db-control/applikationslog?session=1254743865074

Die Erfolgsmeldung wird nur noch einmal angezeigt und erscheint beim Refresh nicht mehr. :)

 

Sie planen eine APEX-Anwendung und benötigen Unterstützung?

Unsere APEX-Spezialisten helfen gerne bei der Konzeption und Umsetzung, kontaktieren Sie uns einfach.

Jede Menge Know-how für Sie!

In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.