tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:オブジェクト項目の文字数を取得する方法

apexタグに頼らずにJavaScript Remotingを中心に開発する場合は入力欄の文字数上限にも注意が必要になります。AngularJSの場合はng-maxlength属性で簡単に指定できたりします。
f:id:tyoshikawa1106:20160203230312p:plain


とはいえオブジェクト画面から項目の文字数を1つ1つ確認していくのは大変です。カスタム項目の場合は後から文字数が変更される可能性も考えられます。


『$ObjectType』を利用することで簡単に解決できます。良くラベル取得でお世話になる『$ObjectType』ですが、次のように記載すると項目の文字数を取得することが可能です。

{!$ObjectType.Contact.Fields.LastName.Length}


使用例です。メッセージ側にも埋め込むことができます。これによりmaxlengthで指定した値とメッセージで表示する値を間違えて入力するようなミスも防止することができます。
f:id:tyoshikawa1106:20160203231348p:plain


こんな感じになります。
f:id:tyoshikawa1106:20160203231608p:plain


上記のとおり項目の文字数上限を取得したいときは$ObjectTypeが便利です。ちなみにこの$ObjectTypeはApexクラス側では利用することができません。自分はあまり必要になったことがなかったのですが、Apex側で項目の文字数上限値を取得したい場合は次の処理で取得できます。

Schema.SObjectType.Contact.fields.LastName.Length

f:id:tyoshikawa1106:20160203232109p:plain

f:id:tyoshikawa1106:20160203232124p:plain:w300


このようにApex側ではSchemeを使って対応できるようになっています。


$ObjectTypeにはLabelやLength以外にもいろいろ用意されています。HelpTextの情報を取得する処理には何回かお世話になりました。詳細は開発者ガイドにまとめられています。

関連記事