Ich zeige ActionMessage
s über eine JSP
-Datei mit dem folgenden Befehl an:
Jetzt möchte ich nur ausgewählte Nachrichten anzeigen. Wie kann ich angeben, welche Nachricht angezeigt werden soll?
Eigentlich habe ich zwei ActionMessages
object - messages
und warnings
.
Nun möchte ich beide auf der separaten JSP
Seite anzeigen ... Eine Seite zeigt messages
und andere für warnings
.
Wie kann man auf der Seite JSP
angeben, welche Meldungen angezeigt werden sollen?
Jetzt habe ich eine seltsame Sache gefunden.
%Vor% Als ich den obigen Code schrieb, funktionierte nur warnings
. Wenn ich die Reihenfolge der obigen beiden Anweisungen umkehrte, funktionierte nur messages
.
Es scheint, dass wir nur ein ActionMessages
-Objekt in einer Anfrage hinzufügen können. Wenn es korrekt ist, dann wie Nachrichten in zwei ActionMessages
Objekte separat angezeigt werden.
Einfach,
Trennen Sie Ihre messages
und Ihre warnings
: Speichern Sie Ihre Nachrichten und Warnungen in Ihrer Struts-Aktion wie folgt:
Um sie anzuzeigen:
%Vor% Dies zeigt alle messages
an (durch Setzen von message="true"
)
Dies zeigt alle warnings
an (durch Setzen von message="false"
)
AKTUALISIEREN Da Sie jetzt Ihre Frage klären, ist der einfachste Weg, dies zu tun.
Haben Sie eine bestimmte Markierung, die angibt, ob der Benutzer messages
oder warnings
anzeigen möchte. Fragen Sie bei der Struts-Aktion das Flag an und prüfen Sie, ob der Benutzer Anzeigen von Meldungen oder Warnungen ausgewählt hat.
Sie speichern entweder warnings
oder messages
basierend auf der Benutzerauswahl und zeigen dieselbe Seite (wie oben beschrieben) an, um Nachrichten anzuzeigen.
Der Grund dafür ist, dass Struts (wenn Sie Nachrichten oder Fehler speichern) diese auf Anfrage oder Sitzung mit der folgenden Konstante speichert.
saveMessages(request, messages)
ausführen) saveErrors(request, errors)
ausführen) Bei Verwendung von <logic:messagesPresent message="true">
sucht Struts nach dem MESSAGE_KEY
(if message = true) oder ERROR_KEY
(if message = false) oder beiden (if message = none). Sie haben keine Kontrolle darüber.
<html:messages />
TLD Kommentare sagt:
Standardmäßig ruft das Tag die Bohne wird es von der iterieren Globals.ERROR_KEY Konstante Zeichenfolge,
aber wenn dieses Attribut auf 'wahr' gesetzt ist Die Bohne wird von der Globals.MESSAGE_KEY Konstante Zeichenfolge. Auch wenn dies auf 'wahr' gesetzt ist, alle Wert, der dem Attribut name zugewiesen ist wird ignoriert.
Sie können auch Scriptlet schreiben, um zu prüfen, ob diese Schlüssel existieren, und dann <logic:iterate />
durch den Schlüssel, um die Nachrichten anzuzeigen (aber das wird zu viel Arbeit sein).
Hoffe, das hilft.
Anstatt das Attribut message
für die Tags messagesPresent
und messages
zu verwenden, können Sie das Attribut name
verwenden, um den Namen des ActionMessages-Objekts in Seiten-, Anforderungs-, Sitzungs- oder Anwendungsbereich anzugeben .