tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:入力規則とVisualforce

入力規則で困ってた話。

 

次のように値が存在しない場合、エラーにする入力規則があります。

f:id:tyoshikawa1106:20121111154426j:plain

 

標準画面の場合、次のようにエラーメッセージが表示されます。

f:id:tyoshikawa1106:20121111154601j:plain

 

これがVisualforceの場合は次のようにシステムエラーが発生してしまいます。

f:id:tyoshikawa1106:20121111154637j:plain

 

困りますね・・・

 

実はDmlExceptionを使用することで簡単に対応できます。

 

try {
    update lists;
} catch (DmlException e) {

    for (Integer i = 0; i < e.getNumDml(); i++) {
        ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,e.getDmlMessage(i)));
    }
    
    return;
}

 

getDmlMessageでDmlExceptionのエラーメッセージを取得できます。

 

これでシステムエラーになるのを防げます。

f:id:tyoshikawa1106:20121111155534j:plain

 

入力規則に設定したエラーメッセージを表示できるので保守も楽にできます。

入力規則が増える度にエラー判定を書く必要もありません。

 

開発後に入力規則が増えても大丈夫ですね。