アプリケーションがロードされるとき、Flex アプリケーションでは
initApp()
メソッドが 呼び出され、Flash Professional アプリケーションではタイムライン(非関数)コードが実行されます。このコードは、Validator クラスによって検証されるサンプルの XML パケットを定義します。次のコードが実行されます。
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
XML パケットは後で、TextArea コンポーネントインスタンスのステージ上に表示されます。 この手順により、再検証を試みる前に XML パケットを変更できます。
ユーザーが「Validate」ボタンをクリックすると、
validateData()
メソッドが呼び出されます。このメソッドは、Validator クラスの
validateEmployeeXML()
メソッドを使用して、従業員 XML パケットを検証します。
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);
}
}
最初に、TextArea コンポーネントインスタンス
xmlText
のコンテンツを使用して、一時的な XML オブジェクトが作成されます。次に、独自の Validator クラス(com.example.programmingas3/errors/Validator.as)の
validateEmployeeXML()
メソッドが呼び出され、一時的な XML オブジェクトをパラメーターとして渡します。XML パケットが有効な場合、Label コンポーネントインスタンス
status
が成功メッセージを表示して、アプリケーションが終了します。
validateEmployeeXML()
メソッドがカスタムエラーをスローした(つまり、FatalError、WarningError または汎用 Error が発生した)場合は、適切な
catch
ステートメントを実行して、
showFatalError()
、
showWarningError()
または
showGenericError()
メソッドのいずれかを呼び出します。これらの各メソッドは、適切なメッセージを
statusText
というテキスト領域に表示して、発生した具体的なエラーをユーザーに通知します。各メソッドは、具体的なメッセージで Label コンポーネントインスタンス
status
の更新も行います。
従業員 XML パケットを検証しようとしたときに致命的なエラーが発生した場合は、次のコードが示すように、そのエラーメッセージが
statusText
テキスト領域に表示され、TextArea コンポーネントインスタンス
xmlText
および Button コンポーネントインスタンス
validateBtn
が無効になります。
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();
}
致命的なエラーではなく警告エラーが発生した場合は、そのエラーメッセージが
statusText
TextArea インスタンスに表示されますが、
xmlText
TextField および Button コンポーネントインスタンスは無効になりません。
showWarningError()
メソッドが、カスタムエラーメッセージを
statusText
テキスト領域に表示します。また、このメッセージでは、XML の検証を続行するか、スクリプトを中止するかをユーザーに尋ねます。
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;
}
ユーザーが「Yes」または「No」ボタンをクリックすると、
closeHandler()
メソッドが呼び出されます。
closeHandler()
メソッドの抜粋コードを次に示します。
function closeHandler(event:CloseEvent):void
{
switch (event.detail)
{
case yesButton:
showFatalError(new FatalError(9999));
break;
case noButton:
statusText.text = "";
hideButtons();
break;
}
}
ユーザーが「Yes」をクリックしてスクリプトの中止を選択した場合は、FatalError がスローされ、その結果、アプリケーションは終了します。