2010-05-13 14 views

Antwort

0

Ein Gedanke wäre, die Flash-Nachricht auf der ersten Seite zu löschen, wenn ein Fehler erkannt wird.

4

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> 
+0

Diese Ausgabe störte mich, mein Lieber! – raffian

0

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.

1

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.

0

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).
Verwandte Themen