Wenn die Anwendung geladen wird, wird die
initApp()
-Methode für Flex-Anwendungen aufgerufen oder der Zeitleistencode (ohne Funktion) wird für Flash Professional-Anwendungen ausgeführt. Dieser Code definiert ein XML-Beispielpaket, das mit der Validator-Klasse validiert wird. Folgender Code wird ausgeführt:
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
Das XML-Paket wird später in einer Instanz der TextArea-Komponente auf der Bühne angezeigt. Durch diesen Schritt können Sie das XML-Paket bearbeiten, bevor Sie es erneut validieren.
Wenn der Benutzer auf die Schaltfläche „Validate“ klickt, wird die
validateData()
-Methode aufgerufen. Diese Methode validiert das XML-Paket mit den Mitarbeiterdaten mithilfe der
validateEmployeeXML()
-Methode der Validator-Klasse. Im folgenden Code wird die
validateData()
-Methode veranschaulicht:
function validateData():void
{
try
{
var tempXML:XML = XML(xmlText.text);
Validator.validateEmployeeXML(tempXML);
status.text = "The XML was successfully validated.";
}
catch (error:FatalError)
{
showFatalError(error);
}
catch (error:WarningError)
{
showWarningError(error);
}
catch (error:Error)
{
showGenericError(error);
}
}
Zuerst wird mithilfe des Inhalts der TextArea-Komponenteninstanz
xmlText
ein temporäres XML-Objekt erstellt. Dann wird die
validateEmployeeXML()
-Methode in der benutzerdefinierten Validator-Klasse (com.example.programmingas3/errors/Validator.as) aufgerufen und das temporäre XML-Objekt wird als Parameter übergeben. Wenn das XML-Paket gültig ist, wird in der Label-Komponenteninstanz
status
eine Erfolgsmeldung angezeigt und die Anwendung beendet. Wenn die
validateEmployeeXML()
-Methode einen benutzerdefinierten Fehler auslöst (d. h. beim Auftreten von FatalError, WarningError oder eines generischen Error-Ereignisses), wird die entsprechende
catch
-Anweisung ausgeführt, die eine der Methoden
showFatalError()
,
showWarningError()
oder
showGenericError()
aufruft. Mit jeder dieser Methoden wird im Textbereich
statusTex
t eine entsprechende Meldung angezeigt, um den Benutzer über den genauen Fehler zu informieren. Alle diese Methoden aktualisieren auch die Label-Komponenteninstanz
status
mit einer speziellen Meldung.
Wie aus dem folgenden Codebeispiel hervorgeht, werden beim Auftreten eines schwerwiegenden Fehlers während des Validierens des XML-Pakets die Fehlermeldung im Textbereich
statusText
und die TextArea-Komponenteninstanz
xmlText
sowie die Button-Komponenteninstanz
validateBtn
deaktiviert:
function showFatalError(error:FatalError):void
{
var message:String = error.message + "\n\n";
var title:String = error.getTitle();
statusText.text = message + " " + title + "\n\nThis application has ended.";
this.xmlText.enabled = false;
this.validateBtn.enabled = false;
hideButtons();
}
Wenn anstelle eines schwerwiegenden Fehlers eine Warnung ausgelöst wird, wird die Fehlermeldung in der TextArea-Instanz
statusText
angezeigt, die TextField- und Button-Komponenteninstanzen
xmlText
werden jedoch nicht deaktiviert. Die
showWarningError()
-Methode zeigt die benutzerdefinierte Fehlermeldung im Textbereich
statusText
an. In der Meldung wird der Benutzer auch aufgefordert, zu entscheiden, ob das Validieren des XML-Pakets fortgesetzt oder das Skript abgebrochen werden soll. Im folgenden Codeauszug wird die
showWarningError()
-Methode veranschaulicht:
function showWarningError(error:WarningError):void
{
var message:String = error.message + "\n\n" + "Do you want to exit this application?";
showButtons();
var title:String = error.getTitle();
statusText.text = message;
}
Wenn der Benutzer auf „Ja“ oder „Nein“ klickt, wird die
closeHandler()
-Methode aufgerufen. Im folgenden Codeauszug wird die
closeHandler()
-Methode veranschaulicht:
function closeHandler(event:CloseEvent):void
{
switch (event.detail)
{
case yesButton:
showFatalError(new FatalError(9999));
break;
case noButton:
statusText.text = "";
hideButtons();
break;
}
}
Wenn sich der Benutzer dafür entscheidet, das Skript durch Klicken auf die Schaltfläche „Ja“ abzubrechen, wird eine FatalError-Ausnahme ausgelöst, die das Beenden der Anwendung zur Folge hat.