När programmet läses in anropas metoden
initApp()
för Flex-program eller så körs tidslinjekoden (icke-funktion) för Flash Professional-program. Den här koden definierar XML-paketet som ska verifieras av klassen Validator. Följande kod körs:
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
XML-paketet visas senare i en TextArea-komponentinstans på scenen. Detta gör att du kan ändra XML-paketet innan du försöker omvalidera det.
När användaren klickar på knappen Validate anropas metoden
validateData()
. Den här metoden validerar XML-paket för employee med hjälp av metoden
validateEmployeeXML()
i klassen Validator. I följande exempel visas metoden
validateData()
:
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);
}
}
Till att börja med skapas ett temporärt XML-objekt med hjälp av innehållet i TextArea-komponentinstansen
xmlText
. Därefter anropas metoden
validateEmployeeXML()
i den anpassade Validator-klassen (com.example.programmingas3/errors/Validator.as) och det temporära XML-objektet skickas som en parameter. Om XML-paketet är giltigt visas i Label-komponentinstansen
status
ett meddelande om att det lyckades och programmet avslutas. Om metoden
validateEmployeeXML()
orsakar ett eget fel (d.v.s. att ett FatalError, WarningError eller allmänt Error inträffar), körs rätt
catch
-sats och någon av metoderna
showFatalError()
,
showWarningError()
eller
showGenericError()
anropas. Dessa metoder visar ett meddelande i ett textområde med namnet
statusTex
för att meddela användaren att ett speciellt fel har inträffat. Metoderna uppdaterar dessutom Label-komponentinstansen
status
med ett speciellt meddelande.
Om ett allvarligt fel inträffar under ett försök att validera XML-paketet för employee, visas felmeddelandet i textområdet
statusText
, och TextArea-komponentinstansen
xmlText
och Button-komponentinstansen
validateBtn
visas, vilket framgår av exemplet nedan:
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();
}
Om det i stället för ett allvarligt fel inträffar en varning, visas felmeddelandet i TextArea-instansen
statusText
, men varken TextField- eller Button-komponentinstansen
xmlText
visas. Metoden
showWarningError()
visar det anpassade felmeddelandet i textområdet
statusText
. I meddelandet kan dessutom användaren bestämma om han/hon vill fortsätta valideringen av XML-skriptet eller avbryta det. I följande utdrag visas metoden
showWarningError()
:
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;
}
När användaren klickar på knappen Yes eller No anropas metoden
closeHandler()
. I följande utdrag visas metoden
closeHandler()
:
function closeHandler(event:CloseEvent):void
{
switch (event.detail)
{
case yesButton:
showFatalError(new FatalError(9999));
break;
case noButton:
statusText.text = "";
hideButtons();
break;
}
}
Om användaren väljer att avbryta skriptet genom att klicka på Yes uppstår ett allvarligt fel som leder till att programmet stängs ner.