オブジェクトのアクセシビリティの確認
オブジェクトを表示するにはユーザーの権限が不十分な場合、コントローラーを使用してそのオブジェクトを表示する Visualforce ページにはアクセスできなくなります。このエラーを回避するには、Visualforce コンポーネントが、ユーザーがコントローラーに関連付けられたオブジェクトに対するアクセス権を持つ場合にのみ表示されるようにする必要があります。
オブジェクトのアクセシビリティは次のように確認できます。
この式は true または false の値を返します。
1{!$ObjectType.objectname.accessible}たとえば、標準の Lead オブジェクトへのアクセス権があるかどうかを確認する場合、次のコードを使用します。
1{!$ObjectType.Lead.accessible}カスタムオブジェクトの場合、コードは似ています。
MyCustomObject__c は、カスタムオブジェクトの名前です。
1{!$ObjectType.MyCustomObject__c.accessible}ユーザーにオブジェクトへのアクセス権がある場合のみページの一部が表示されるようにするには、コンポーネントの render 属性を使用します。たとえば、ユーザーに Lead オブジェクトへのアクセス権がある場合にページブロックを表示するには、次のように実行します。
1<apex:page standardController="Lead">
2 <apex:pageBlock rendered="{!$ObjectType.Lead.accessible}">
3 <p>This text will display if you can see the Lead object.</p>
4 </apex:pageBlock>
5</apex:page>ユーザーがオブジェクトにアクセスできない場合に、代替メッセージを表示することをお勧めします。次に例を示します。
1<apex:page standardController="Lead">
2 <apex:pageBlock rendered="{!$ObjectType.Lead.accessible}">
3 <p>This text will display if you can see the Lead object.</p>
4 </apex:pageBlock>
5 <apex:pageBlock rendered="{! NOT($ObjectType.Lead.accessible) }">
6 <p>Sorry, but you cannot see the data because you do not have access to the Lead object.</p>
7 </apex:pageBlock>
8</apex:page>