我正在尝试修复我为这个问题VisualForce 发布的代码:将回车符转换为长文本字段中的 html 换行符
正如您在该帖子中看到的那样,Visualforce 页面有一个自定义控制器,其中包含 Case 的选项卡式内容。列出 CaseComments 的唯一方法是使用自定义 Apex。控制器执行一个简单的查询来检索当前案例的所有 CaseComments。
如果当前用户有权编辑特定案例评论的实例,我只想显示“编辑”链接。
我在这里找到了一篇关于基于对象级安全性动态渲染组件的好博客:http: //forcearchitects.deliveredinnovation.com/2011/02/05/render-visualforce-components-dynamically-based-on-object-level-security/
根据我尝试使用的帖子
$ObjectType.CaseComment.updateable
如下所示:
<apex:repeat value="{!comments}" var="c">
<tr>
<td class="commentsActionColumn">
<!-- open the case comment for edit -->
<apex:outputLink title=""
rendered="{!$ObjectType.CaseComment.updateable}"
value="/{!c.id}/e?parent_id={!c.parentId}&retURL=/apex/{!$CurrentPage.Name}%3Fid={!case.id}" style="font-weight:bold">Edit</apex:outputLink>
</td>
<td>
<!-- display the case comment formatted using the apex outputField -->
<div class="commentTdClass">
<apex:outputField value="{!c.commentbody}"></apex:outputField>
</div>
</td>
</tr>
</apex:repeat>
不幸的是,可更新的测试是在对象级别上的,因此如果当前用户有权编辑任何 CaseComment,它会在所有 CaseComment 上返回 true。
如果当前用户可以修改特定行,我需要记录级别验证以仅显示编辑操作。
有任何想法吗?
更新 当我重读我的问题时,我发现它并不像应该的那样清楚。
当我遍历 CaseComment 集时,对于给定的 Case,我需要知道当前用户是否可以安全地编辑特定 CaseComment 而不会看到“您没有权限页面”。此测试必须在 CaseComment by CaseComment 记录级别的基础上进行,因为任何给定的案例都会有许多 CaseComments 都由不同的用户贡献