salesforceには標準機能が充実しているので標準でもできるやん。というような内容ですが、複雑な組み合わせの入力規則などをapexで作ることもあるかもしれないので、バリデーションチェックのサンプルを作ってみました。
機能
顧客作成画面みたいなものをイメージしてみました。
使っているのは標準オブジェクトの取引先責任者です。
今回のバリデーションチェックは、
1.携帯電話の090、080,070から始まっているかどうか
2.携帯電話が11桁かどうか
の二つです。
では実際のコードです。
VF画面
samplepage.vfp
<apex:page controller="samplepagecontroller" sidebar="false">
<apex:pageMessages id="message"/>
<apex:sectionHeader title="顧客作成画面"/>
<apex:form >
<apex:pageBlock >
<apex:pageBlockSection columns="2" showHeader="true" title="個人情報">
<apex:inputField value="{!conditions.LastName}"/>
<apex:inputField value="{!conditions.FirstName}"/>
<apex:inputField value="{!conditions.MobilePhone}"/>
<apex:inputField value="{!conditions.LeadSource}"/>
</apex:pageBlockSection>
<apex:pageBlockButtons location="bottom">
<apex:commandButton action="{!save}" value="保存"/>
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
</apex:page>
Apexコード
samplepagecontroller.cls
String left = conditions.MobilePhone.left(3);
Integer length = conditions.MobilePhone.replace('-','').length();
//電話番号チェック
if ( left == '090' || left == '080' || left == '070') {
if ( length != 11 ) {
Apexpages.addMessage(new ApexPages.message(ApexPages.Severity.INFO,'携帯番号は11桁で入力してください。'));
}
insertContact.MobilePhone = conditions.MobilePhone.replace('-','');
} else {
Apexpages.addMessage(new ApexPages.message(ApexPages.Severity.INFO,'携帯番号は090、080、070から始まる番号を入力してください。'));
}
まず、.left(3)で最初の3桁を判定します。
その後問題なければ、.length() != 11で11桁の判定をしています。
3桁チェック
11桁チェック
このように組み合わせればより複雑なバリデーションチェックも可能だと思います。