Wenn ein Fehler in einem Formular auftritt, führt dies zu einer Flash-Nachricht. Wenn ich dann auf eine andere Seite gehe, erscheint die (alte) Flash-Nachricht wieder auf der neuen Seite. Wie verhindere ich das?Verhindern, dass Flash-Nachricht zweimal angezeigt wird (auf Seite mit Fehler und auf der nächsten Seite)
Antwort
Ein Gedanke wäre, die Flash-Nachricht auf der ersten Seite zu löschen, wenn ein Fehler erkannt wird.
versuchen Sie es mit request.message, es funktioniert die gleiche Weise wie flash.message, aber wird nur für eine lange genug eingeschaltet, um einmal angezeigt werden.
Controller:
request.message = message;
und auf GPS Sie verwenden es, wie Sie mit flash.message Wold:
<g:if test="${request.message }"><br>
<div class="message">${request.message}</div> </g:if>
nicht sicher, ob die request.message Strecke immer noch eine Option in der neueren Version ist von Grails, als ich das versuchte und es hat nicht für mich funktioniert.
Verfahren ich die Meldung zeigt zweimal zu vermeiden gefunden ist, eine Nachricht setzen einen bestimmten Schlüssel in Blitz wie:
Controller:
flash.specificKeyForControllerAndAction = "Some message"
GSP:
<g:if test="${flash.specificKeyForControllerAndAction}">
<div class="message">${flash.specificKeyForControllerAndAction}</div>
</g:if>
Offensichtlich kann der Schlüssel alles sein, was Sie möchten, aber stellen Sie sicher, dass Ihre anderen Ansichten nicht nach dem gleichen Schlüssel suchen, sonst wird die Nachricht wieder angezeigt.
Ich würde sagen, wenn die Nachricht nur für die Anfrage ist, verwenden Sie request.message. Wenn eine Umleitung beteiligt sein könnte, Flash verwenden und dann die Flash-Meldung löschen, nachdem es in den gsp Anzeige:
<div class="message">
${flash?.message}
</div>
<%
// Prevent flash messages displaying twice if there is no redirect
flash.message = null
%>
Ich würde das alles in einem Standard-Template, die Sie für die Anzeige von Nachrichten verwenden.
Zitat aus Dokumentation grails http://docs.grails.org/3.1.1/ref/Controllers/flash.html
Das Flash-Objekt ist eine Karte (ein Hash), die Sie Schlüssel-Wert-Paare speichern können. Diese Werte werden transparent in der Sitzung gespeichert und am Ende der nächsten Anfrage gelöscht.
Mit diesem Muster können Sie HTTP-Weiterleitungen verwenden (was für die Weiterleitung nach dem Post nützlich ist) und Werte beibehalten, die aus dem Flash-Objekt abgerufen werden können.
Sie müssen sich erinnern, wie Werke http://grails.asia/grails-redirect-vs-forward
umleiten Wenn Sie eine Umleitung zu tun, gibt es einen zurück an den Client-Browser gehen, und der Browser rufen Sie die URL es erhalten haben, dann ist dieser Aufruf die „next“ Anfrage nach dem Hinzufügen von Flash-Nachricht.
Dann sollten Sie eine Flash-Nachricht vor einer Weiterleitung hinzufügen. Weil diese Flash-Nachricht am Ende der nächsten Anfrage gelöscht wird. Oder wenn Sie keine Weiterleitung verwenden und einfach eine einfache Weiterleitung durchführen (z. B. eine einfache Rückübertragung Ihres gsp), gibt es nach dem Hinzufügen der Flash-Nachricht keine weitere Anfrage.Die nächste Anfrage wird dann sein, wenn Sie auf einen anderen Link zugreifen. Es ist nur am Ende dieser nächsten Anfrage, dann nach dem gsp-Rendering, dass die Flash-Nachricht von der Sitzung von Grails Framework gelöscht wird.
Zum Schluss:
- , wenn Sie eine Meldung angezeigt werden soll, wenn Sie eine Umleitung verwenden Flash-Mitteilung tun. Es wird automatisch vom Framework gelöscht.
- Wenn Sie eine Nachricht anzeigen möchten, wenn Sie eine Weiterleitung ausführen, können Sie eine Lösung verwenden, die von fonger angegeben wurde (fügen Sie eine Nachricht in der Anfrage hinzu).
- 1. verhindern, dass die Seite angezeigt wird
- 2. Wie wird das Datum auf der nächsten Seite angezeigt?
- 3. Fehler nicht auf der Seite angezeigt
- 4. Wie kann man verhindern, dass eine Seite allmählich angezeigt wird?
- 5. Seite lädt zweimal auf Firefox
- 6. Verhindern, dass die HTML-Seite zwischengespeichert wird
- 7. rails: verhindern, dass die Flash-Nachricht zweimal angezeigt wird
- 8. ko.js zweimal auf einer Seite
- 9. auf Klick auf dem Etikett auf der nächsten Seite
- 10. Verhindern, dass AspxGridView beim Laden der Seite geladen wird
- 11. Sitzung wird nicht auf der nächsten Seite weitergeleitet
- 12. Verhindern, dass Protokollmethoden bei der automatischen Vervollständigung zweimal angezeigt werden
- 13. error.phtml wird angezeigt (Seite nicht gefunden Fehler)
- 14. Verhindern, dass ein PostBack in der Historie angezeigt wird
- 15. ein Bild zweimal auf der gleichen Seite drucken
- 16. Zugriff auf Elemente auf der nächsten Seite in Selen Python
- 17. So verhindern Sie, dass Benutzer auf die Admin-Seite zugreifen
- 18. Django: - Zugriff auf den Wert einer einzelnen Taste auf einer Seite auf der nächsten Seite gedrückt
- 19. WooCommerce Payment Gateway wird nicht auf der Checkout-Seite angezeigt
- 20. verhindern, dass Javascript zweimal ausgeführt wird
- 21. So identifizieren Sie "Flash-Nachricht" Fehler auf der Seite angezeigt
- 22. Growl wird nicht auf der zweiten mobilen Seite angezeigt
- 23. Verhindern, dass "Notationspalette" angezeigt wird
- 24. wie Fehler auf der gleichen Seite angezeigt werden (PHP-Formular)
- 25. Seite wird nicht auf npm angezeigt starten mit Knoten, reagieren
- 26. Bootstrap Karussell wird nicht auf der Seite angezeigt
- 27. Verhindern, dass LaTeX deluxetable auf einer neuen Seite startet
- 28. Wird die Häufigkeit der Abfragen schneller auf meiner Seite angezeigt?
- 29. WPF-Menü wird auf der linken Seite des Fensters angezeigt
- 30. Leaflet-Map wird nicht auf der Wordpress-Seite angezeigt
Diese Ausgabe störte mich, mein Lieber! – raffian