Ich versuche, einen Block nur anzuzeigen, wenn globale Nachrichten in der JSF-Warteschlange vorhanden sind.
Ich habe versucht, rendered="#{not empty facesContext.getMessageList(null)}"
zu verwenden, aber es wird immer als falsch ausgewertet.
Ich habe nur eine benutzerdefinierte EL-Funktion erstellt und in Java getestet.
z. : Meine el Funktion:
%Vor%JSF-Seite:
%Vor%Ich benutze Mojarra 2.1.5.
Vermisse ich etwas? Danke!
Bearbeiten: habe die folgenden Vorschläge versucht, aber bisher kein Glück:
#{not empty facesContext.getMessageList(null)}
- & gt; immer falsch #{! facesContext.getMessageList(null)}
- & gt; Fehler #{! empty facesContext.getMessageList(null)}
- & gt; immer falsch #{fn:length(facesContext.getMessageList(null)) > 0}
- & gt; immer falsch #{not empty facesContext.messageList(null)}
- & gt; Fehler: Methode messageList nicht gefunden #{not empty facesContext.messageList}
- & gt; gibt true zurück, wenn es sich um einen Validierungsfehler handelt (ich möchte nur bei einem globalen Fehler true) #{! facesContext.getMessageList(null).isEmpty()}
- & gt; löst IllegalAccessException aus: Die Klasse javax.el.BeanELResolver kann nicht auf ein Member der Klasse java.util.Collections $ UnmodifiableCollection mit den Modifikatoren "public" Versuchen Sie Folgendes:
%Vor%anstelle von:
%Vor%in der Antwort von Daniel.
Oder diese:
%Vor%wo 'inputForm' ist:
%Vor%Wenn Sie es nur an eines der verschiedenen Formulare auf Ihrer Seite adressieren möchten.
Ich habe eine el Funktion geringfügig anders gemacht:
%Vor% Der Unterschied ist der Parameter clientId
. Das Verhalten dieser Funktion entspricht genau dem von #{not empty facesContext.getMessageList(clientId)}
. Beim Debuggen des Codes habe ich festgestellt, dass, wenn ich die Funktion mit clientId = null
aufgerufen habe, der Wert von clientId
innerhalb der Funktion tatsächlich ""
(leere Zeichenfolge) ist.
Danach habe ich die EL 3.0 Spezifikation konsultiert und gefunden:
Abschnitt 1.23 - Typenkonvertierung
Jeder Ausdruck wird im Kontext eines erwarteten Typs ausgewertet. Das Ergebnis der Ausdruckbewertung stimmt möglicherweise nicht exakt mit dem erwarteten Typ überein, sodass die in den folgenden Abschnitten beschriebenen Regeln angewendet werden. [...]
Abschnitt 1.23.2 - Coerce A to String
Wenn A null ist: return "" [...]
Ich denke also nicht, dass es eine Möglichkeit gibt, Nachrichten anzufordern, wobei clientId = null
den Wert null
als Parameter übergibt. Die einzige Möglichkeit besteht darin, eine Funktion zu verwenden, die dies ohne Verwendung eines Parameters oder Tests ausführt, wenn der Parameter auf die leere Zeichenfolge festgelegt wurde.
Tags und Links jsf