Developer

Apexでバリデーションチェックを作ろう【Apex】

Developer
この記事は約4分で読めます。

salesforceには標準機能が充実しているので標準でもできるやん。というような内容ですが、複雑な組み合わせの入力規則などをapexで作ることもあるかもしれないので、バリデーションチェックのサンプルを作ってみました。

機能

顧客作成画面みたいなものをイメージしてみました。
使っているのは標準オブジェクトの取引先責任者です。
今回のバリデーションチェックは、
1.携帯電話の090、080,070から始まっているかどうか
2.携帯電話が11桁かどうか
の二つです。

では実際のコードです。

VF画面
<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コード

        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桁チェック

スクリーンショット 2019-08-04 21.17.00.png

11桁チェック

スクリーンショット 2019-08-04 21.17.26.png

このように組み合わせればより複雑なバリデーションチェックも可能だと思います。

その他の開発に関する記事はこちらです。

Developerも含めた試験問題にチャレンジしてみましょう。