JSF-Webseiten können zum Bereitstellen von Feedback Fehlernachrichten enthalten, in der Regel, um Benutzer über ein Problem auf der Seite zu benachrichtigen. Mit den Systemfunktionen sysLib.setError und sysLib.setErrorForComponentID können Sie den Wert dieser Fehlernachrichtenkomponenten über den JSF-Handler der Seite festlegen.
JSF-Seiten verwenden zwei Typen von Fehlernachrichtenkomponenten:
- Die Komponente Fehleranzeige zeigt eine Nachricht an, die sich auf eine bestimmte Eingabekomponente auf der Seite bezieht. Aus diesem Grund muss von diesem Komponententyp die ID einer Eingabekomponente auf der Seite angegeben werden. Die Komponente 'Fehleranzeige' wird durch das JSF-Tag <h:message> dargestellt und die ID der Eingabekomponente, für die Feedback bereitgestellt wird, wird in dem zugehörigen Attribut for angegeben.
- Für das Verhalten der Komponente Fehleranzeige stehen zwei Möglichkeiten zur Verfügung:
- Sie kombiniert alle Fehlernachrichten aus den Fehleranzeige-Komponenten auf der Seite und fügt alle Fehlernachrichten hinzu, die nicht einer bestimmten Komponente zugeordnet sind.
- Sie zeigt nur die Fehlernachrichten an, die nicht einer bestimmten Komponente zugeordnet sind.
Es gibt folgende Möglichkeiten, wie ein JSF-Handler den Wert der Fehleranzeige-Komponenten festlegen kann:
- Mit der Systemfunktion sysLib.setError wird die Nachricht einer Fehleranzeige-Komponente festgelegt und der Name einer Variable angegeben, die an eine Eingabekomponente auf der Seite gebunden ist. Mit anderen Worten, Sie übergeben den Namen einer EGL-Variable im JSF-Handler an die Funktion und JSF sucht die Fehleranzeige-Komponente, die einer Eingabekomponente auf der Seite zugeordnet ist, ääädie wiederum dieser angegebenen EGL-Variable zugeordnet ist.
- Mit der Funktion sysLib.setErrorForComponentID wird die Nachricht einer Fehleranzeige-Komponente festgelegt und die ID einer Eingabekomponente auf der Seite äääangegeben. JSF zeigt die Fehlernachricht in der Fehleranzeige-Komponente an, die der angegebenen Eingabekomponente zugeordnet ist.
Folgen Sie diesen Schritten, um auf einer Webseite eine Fehlernachricht mit EGL anzuzeigen:
- Erstellen Sie wie in Ressourcenpaket erstellen beschrieben ein Ressourcenpaket, in dem die Fehlernachrichten enthalten sein sollen. Dies bedeutet, dass Sie eine Datei mit einem Namen erstellen, der das folgende Format aufweist:
präfix_ländereinstellung.properties
- präfix
- Das Präfix des Ressourcenpakets kann frei gewählt werden, muss jedoch bei allen Ressourcenpaketen in der Anwendung identisch sein.
- ländereinstellung
- Die Ländereinstellung des Ressourcenpakets, z. B. en_US.
Die Ländereinstellung gibt die Sprache der Zeichenfolgen im Paket sowie optional spezifischere Informationen zur spezialisierten Version der Sprache an (z. B. Dialekt, Variante oder geografische Position).
Weitere Informationen zu Ländereinstellungen finden Sie unter Ländereinstellungen für Ressourcenpakete.
Beispielsweise könnte ein Ressourcenpaket mit Englisch, das in den Vereinigten Staaten gesprochen wird,
mit
resourceBundle_en_US.properties benannt werden.
Fügen Sie der Datei anschließend Nachrichten hinzu, die das folgende Format aufweisen:
Schlüsselname=Nachrichtentext. Beispiel:
error01=The specified value is too short.
Die Nachricht kann optional Einfügungen enthalten. Einfügungen werden durch eine ganze Zahl in geschweiften Klammern dargestellt und werden durch einen Wert ersetzt, den Sie beim Anzeigen der Fehlernachricht angeben. Fehlernachrichten können mehrere Einfügungen pro Nachricht enthalten, die z. B. wie folgt durchnummeriert sind: {0}, {1} und {2}.
Ist eine einzige Einfügung vorhanden, kann die Fehlernachricht im Ressourcenpaket wie folgt aussehen:
error02=The specified value is shorter than five characters: {0}
- Erstellen Sie auf einer Webseite in einem EGL-Webprojekt eine Eingabekomponente, beispielsweise eine Eingabekomponente für Text. Sie können JSF-Fehleranzeigen nur bei Eingabekomponenten verwenden.
- Binden Sie die Eingabekomponente im JSF-Handler, der der Seite zugeordnet ist, an eine Variable.
- Legen Sie optional als ID der Komponente ein aussagefähiges mnemonisches Zeichen fest, indem Sie zum Auswählen auf die Komponente klicken und die ID in der Eigenschaftsansicht in das Feld für die ID eingeben.
- Ziehen Sie eine Fehleranzeige-Komponente aus der Palettenansicht auf die Seite. Sie sollten die Fehleranzeige-Komponente neben die Eingabekomponente platzieren, sodass deutlich wird, welche Komponente der Fehlernachricht zugeordnet ist.
- Klicken Sie auf die Fehleranzeige-Komponente, um sie auszuwählen.
- Legen Sie in der Eigenschaftsansicht unter der Option zum Anzeigen der Fehlernachricht für die Komponente im Feld für die ID die ID der Eingabekomponente fest.
Nun zeigt der Code der Webseite an, dass die Fehlernachricht der Eingabekomponente zugeordnet ist. Beachten Sie im folgenden Beispiel, dass das Attribut
for der Fehleranzeige-Komponente auf den Wert des Attributs
id der Eingabekomponente eingestellt ist:
<h:inputText id="inputComponent"
styleClass="inputText"
value="#{errorMessageTest.inputString}"
binding="#{errorMessageTest.inputString_Ref}">
</h:inputText>
<h:message id="message1"
styleClass="message"
for="inputComponent">
</h:message>
- Speichern Sie die Seite.
- Legen Sie im JSF-Handler, der der Seite zugeordnet ist, als JSF-Handlereigenschaft msgResource das Präfix des Ressourcenpakets fest (d. h., den Dateinamen ohne Erweiterung und Code für die Ländereinstellung):
handler errorMessageTest type JSFHandler
{view = "errorMessageTest.jsp",
msgResource = "resourceBundle"}
Da das Ressourcenpaket in diesem Fall den Namen resourceBundle_en_US.properties trägt, wird für die Eigenschaft msgResource der Wert resourceBundle eingestellt.
- Verwenden Sie zum Festlegen der Fehlernachricht die Systemfunktion sysLib.setError oder sysLib.setErrorForComponentID und verwenden Sie eine der folgenden Methoden:
- Wenn Sie eine im JSF-Handler angegebene Zeichenfolge als Text der Fehlernachricht verwenden wollen, übergeben Sie die folgenden drei Parameter in der angegebenen Reihenfolge:
- Sie übergeben den nicht in Anführungszeichen gesetzten Namen der EGL-Variable im JSF-Handler. Geben Sie für ein Feld innerhalb eines Datensatzes den Datensatznamen, einen Punkt und den Feldnamen an. Beispiel: myRecord.myField.
- Sie übergeben eine leere Zeichenfolge. Sie übergeben als zweiten Parameter eine leere Zeichenfolge, weil dieser Parameter in einer externen Fehlernachrichtendatei als Schlüssel einer Nachricht verwendet wird.
- Sie übergeben den Text der Fehlernachricht als Zeichenfolge.
Im Folgenden finden Sie ein Beispiel für diese Methode:SysLib.setError(inputString, "",
"This is the text of the error message.");
- Wenn Sie eine Fehlernachricht in einem Ressourcenpaket mit keiner oder einer einzigen Einfügung verwenden möchten, übergeben Sie die folgenden drei Parameter in der angegebenen Reihenfolge:
- Sie übergeben den nicht in Anführungszeichen gesetzten Namen der EGL-Variable im JSF-Handler. Geben Sie für ein Feld innerhalb eines Datensatzes den Datensatznamen, einen Punkt und den Feldnamen an. Beispiel: myRecord.myField.
- Sie übergeben den in Anführungszeichen gesetzten Schlüssel der Nachricht im Ressourcenpaket.
- Wenn die Nachricht eine Einfügung erwartet, müssen Sie den Wert übergeben, der in dieser Einfügung verwendet werden soll. Dieser Parameter muss mit dem Datentyp 'string' kompatibel sein.
Wenn Sie beispielsweise einen Fehler ausgeben wollen, der sich auf die Variable inputString bezieht, wobei eine Fehlernachricht mit dem Schlüssel error02 und dieselbe Variable als Einfügewert verwendet werden soll, würden Sie diesen EGL-Code verwenden:SysLib.setError(inputString, "error02", inputString);
Bei diesem Beispiel wird ein Ressourcenpaket mit einer Nachrichtendefinition ähnlich dem folgenden Beispiel vorausgesetzt:error02=The specified value is shorter than five characters: {0}
- Wenn Sie in einem Ressourcenpaket eine Fehlernachricht mit zwei oder mehr Einfügungen verwenden wollen, müssen Sie sysLib.getMessage koordiniert mit sysLib.setError verwenden, weil sysLib.setError nur Fehlernachrichten mit keiner oder einer einzigen Einfügung unterstützt:
- Legen Sie als Erstellungsdeskriptoroption userMessageFile das Präfix des Namens der Ressourcenpaketdatei fest, denselben Wert, den Sie in der JSF-Handlereigenschaft msgResource festlegen.
- Setzen Sie die Einfügungen mithilfe von sysLib.getMessage in die Nachricht und erstellen Sie eine Zeichenfolge, die die vollständige Nachricht enthält:
errorMessageString string =
sysLib.getMessage("error03", [inputString, "five"]);
- Übergeben Sie die Fehlernachrichtzeichenfolge an sysLib.setError:
SysLib.setError(inputString, "", errorMessageString);
Bei diesem Beispiel wird im Ressourcenpaket eine Fehlernachricht mit zwei Einfügungen vorausgesetzt, wie im folgenden Beispiel:error03=The string {0} is too short.
It must be at least {1} characters long.
- Sie werden in den meisten Fällen sysLib.setError zum Festlegen der Fehlernachricht verwenden, weil es in der Regel bequemer ist, den Namen der EGL-Variablen als Referenzpunkt der Fehlernachricht zu verwenden.
Wenn Sie jedoch die ID der Eingabekomponente kennen, der Sie die Fehlernachricht zuordnen wollen, können Sie sysLib.setErrorForComponentID ähnlich sysLib.setError verwenden, außer dass für sysLib.setErrorForComponentID die in Anführungszeichen gesetzte Kennung der Eingabekomponente erforderlich ist, die aus der ID des Formulars auf der Seite, einem Doppelpunkt und der ID der Eingabekomponente und nicht aus dem Namen der EGL-Variable besteht:
SysLib.setErrorForComponentId("form1:inputComponent",
"error01", inputString);
Bei diesem Beispiel wird auf der Seite eine Eingabekomponente mit der ID inputComponent und eine der Eingabekomponente zugeordnete Fehleranzeige-Komponente vorausgesetzt. Es wird auch vorausgesetzt, dass im Ressourcenpaket eine Nachricht mit dem Schlüssel error01 vorhanden ist, ähnlich wie in den vorherigen Beispielen.
- Wenn Sie die Fehlernachricht in der Fehleranzeige-Komponente anzeigen und nicht eine Fehleranzeige-Komponente anzeigen wollen, die einer bestimmten Eingabekomponente zugeordnet ist, übergeben Sie die Fehlernachricht an sysLib.setError, ohne einen Variablennamen anzugeben:
SysLib.setError("The string is too short.");
Der folgende JSF-Handler beispielsweise testet einen in eine Eingabekomponente auf einer Webseite eingegebenen Wert auf die richtige Länge:
Wenn der Wert zu kurz ist, zeigt der JSF-Handler eine Fehlernachricht an.
handler errorMessageTest type JSFHandler
{view = "errorMessageTest2.jsp",
msgResource = "resourceBundle"}
inputString string;
function validateString()
if (StrLib.characterLen(inputString) < 5)
SysLib.setError(inputString, "error02", inputString);
end
end
end
Bei diesem Beispiel wird vorausgesetzt, dass die Variable
inputString an eine Eingabekomponente auf der zugeordneten Webseite gebunden ist, die wie oben erklärt einer Fehleranzeige-Komponente zugeordnet ist. Es setzt auch ein Ressourcenpaket mit dem Namen
resourceBundle_locale.properties voraus, wobei
locale der Code für die Ländereinstellung der von Ihnen verwendeten Sprache ist. Im Beispiel wird in dieser Ressourcenpaketdatei eine Nachricht ähnlich der folgenden verwendet:
error02=The specified value is shorter than five characters: {0}
JSF kann die Werte von Fehleranzeige-Komponenten auch als Teil der Benutzereingabeprüfung festlegen. Siehe Fehleranzeigen.