如何根据用户配置文件在自定义控制器中渲染VisualForce页面inputCheckBox



我有一个VisualForce页面,它有一个自定义控制器,我希望用户只有在他们的配置文件中有可访问选项时才能看到像inputCheckBox这样的组件。我读到过,当使用自定义控制器时,VF在系统上下文中运行。我已经尝试过使用ObjectType来呈现复选框,如果用户有访问权限,即使配置文件被阻止到这个特定的字段,它也会呈现。我的代码中Billable是我试图隐藏的字段:

apex:inputCheckBox style="width:15px;" rendered="{!$ObjectType.MyObject__c.accessible} value="{!SelectedMO.Billable}"/>

您真的需要一个自定义组件(一切从头开始构建)吗?如果你使用标准(设置)控制器和自定义扩展,整个可见性应该为你自动完成,代码越少越好…

或者你可以查询Profile/permissionset相关的表。我说查询是因为控制器中的描述调用可能会返回和你用过的accessible一样的东西。下面是图表:http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_erd_profile_permissions.htm

这应该是一个好的开始:

SELECT Field, PermissionsEdit,PermissionsRead
FROM FieldPermissions
WHERE Parent.Profile.Name = 'System Administrator'
    AND SobjectType = 'Account'
LIMIT 10

最新更新