入力規則で困ってた話。
次のように値が存在しない場合、エラーにする入力規則があります。
標準画面の場合、次のようにエラーメッセージが表示されます。
これがVisualforceの場合は次のようにシステムエラーが発生してしまいます。
困りますね・・・
実は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のエラーメッセージを取得できます。
これでシステムエラーになるのを防げます。
入力規則に設定したエラーメッセージを表示できるので保守も楽にできます。
入力規則が増える度にエラー判定を書く必要もありません。
開発後に入力規則が増えても大丈夫ですね。