Memos About Salesforce

Salesforceにハマってたこと!

Salesforce VF 必須項目 カスタマイズ

こんにちは、管理人の@Salesforce.Zです。

VF画面で、『required="true"』を宣言して必須項目にするようなケースはよくあると思います。

しかし、ラベル名の関係などでカスタマイズにしたい場合がある、

今回、この方法を共有します。

f:id:jude2016:20190416133529p:plain
イメージ

目次

VFでの必須項目

標準のVFタグ機能で対応する

『required="true"』を宣言すると、対応できる

必須項目にするとエラーメッセージが表示されたり未入力の項目が強調されたりするのですごく便利です

これが簡単です。

サンプルVF

<apex:inputField value="{!account.Name}" required="true" />

項目名が画面で表示するラベルが違う場合、カスタム

サンプルVF(divタグの場合)

<div class="requiredInput">
    <div class="requiredBlock"></div>
    <apex:inputText value="{!Account.Phone}"/>
</div>

サンプルVF(outputPanelタグの場合)

layout指定をblockに指定すると、html変換でdivタグに変わります

<apex:outputPanel styleClass="requiredInput" layout="block">
    <apex:outputPanel styleClass="requiredBlock" layout="block"/>
    <apex:inputText value="{!Account.Phone}"/>
</apex:outputPanel>

しかし、カスタムの場合、APEX側でメソッドを通して、オリジナルのチェックを行う必要がある

上記のサンプルは赤線だけを出しているから

ボタンやリンクにActionでチェックすればいいかと思います。

VFの例

<apex:outputPanel styleClass="requiredInput" layout="block">
    <apex:outputPanel styleClass="requiredBlock" layout="block"/>
    <apex:inputText value="{!Account.Phone}"/>
</apex:outputPanel>
<apex:commandButton action="{!save}" value="保存" />

対応するAPEXの例

public void save(){
    String errorMessage = '値を入力してください';
    if(Account.Phone == NULL){
        ApexPages.addMessage(new ApexPages.Message( ApexPages.severity.ERROR, errorMessage));
    }
}