| Flex 2 開発ガイド > Flex データ機能 > データ検証 > 検証の一般的なガイドライン | |||
フォーム上で検証を実行するときには、いくつかのガイドラインに従う必要があります。通常、フォームはデータモデルに関連付けます。そのようにすることで、入力ユーザーインターフェイスコントロールをデータモデルのフィールドにバインディングする一部として検証をトリガできます。また、次のアクションを実行することもできます。
validate() メソッドを明示的に呼び出します。詳細については、必須フィールドの検証を参照してください。click イベントを使用してプログラムからバリデータを呼び出し、すべての検証が成功したらデータを送信します。次の例では、これらのガイドラインに従い、複数の TextInput コントロールで構成されたフォームを検証します。
<?xml version="1.0"?>
<!-- validators\FullApp.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.events.ValidationResultEvent;
private var vResult:ValidationResultEvent;
// Function to validate data and submit it to the server.
private function validateAndSubmit():void {
// Validate the required fields.
vResult = fNameV.validate();
if (vResult.type==ValidationResultEvent.INVALID)
return;
vResult = lNameV.validate();
if (vResult.type==ValidationResultEvent.INVALID)
return;
// Since the date requires 3 fields, perform the validation
// when the Submit button is clicked.
vResult = dayV.validate();
if (vResult.type==ValidationResultEvent.INVALID)
return;
// Invoke any other validators or validation logic to make
// an additional check before submitting the data.
// Submit data to server.
}
]]>
</mx:Script>
<!-- Define the data model. -->
<mx:Model id="formInfo">
<formData>
<date>
<month>{monthInput.text}</month>
<day>{dayInput.text}</day>
<year>{yearInput.text}</year>
</date>
<name>
<firstName>{fNameInput.text}</firstName>
<lastName>{lNameInput.text}</lastName>
</name>
<phoneNum>{phoneInput.text}</phoneNum>
</formData>
</mx:Model>
<!-- Define the validators. -->
<mx:StringValidator id="fNameV"
required="true"
source="{fNameInput}"
property="text"/>
<mx:StringValidator id="lNameV"
required="true"
source="{lNameInput}"
property="text"/>
<mx:PhoneNumberValidator id="pnV"
source="{phoneInput}"
property="text"/>
<!-- Invoke the DataValidator programmatically. -->
<mx:DateValidator id="dayV"
triggerEvent=""
daySource="{dayInput}" dayProperty="text"
monthSource="{monthInput}" monthProperty="text"
yearSource="{yearInput}" yearProperty="text"/>
<!-- Define the form to populate the model. -->
<mx:Form>
<mx:FormItem label="Month">
<mx:TextInput id="monthInput"/>
</mx:FormItem>
<mx:FormItem label="Day">
<mx:TextInput id="dayInput"/>
</mx:FormItem>
<mx:FormItem label="Year">
<mx:TextInput id="yearInput"/>
</mx:FormItem>
<mx:FormItem label="First name">
<mx:TextInput id="fNameInput"/>
</mx:FormItem>
<mx:FormItem label="Last name">
<mx:TextInput id="lNameInput"/>
</mx:FormItem>
<mx:FormItem label="Phone">
<mx:TextInput id="phoneInput"/>
</mx:FormItem>
</mx:Form>
<!-- Define the button to trigger validation. -->
<mx:Button label="Submit"
click="validateAndSubmit();"/>
</mx:Application>
この例では、次の処理が実行されます。
valueCommit イベントが送出されるたびに、関連付けられたバリデータが実行されます。click イベントによって validateAndSubmit() が呼び出され、最終的な検証を実行してからデータがサーバーに送信されます。 validateAndSubmit() 関数は、すべての必須フィールドについてバリデータを呼び出します。 validateAndSubmit() 関数は DateValidator を呼び出します。 validateAndSubmit() 関数から値は返されますが、データは送信されません。validateAndSubmit() 関数によってデータがサーバーに送信されます。 Flex 2.01