1

背景

有问题的应用程序是一个使用 ADF 业务组件、JSF 2.0 和 Facelets 的 WebCenter 11g 内部开发项目,并且正在使用 JDeveloper 11g 第 2 版,版本 11.1.2.4.0 进行开发。模型项目包含一个实体对象,其中包含许多用于审查业务项目的值。视图控制器项目在有界任务流中包含一个页面,其中包含一个输入表单,该表单引用这些值以创建和编辑评论。ADF 安全功能在应用程序中启用。在这些评论的上下文中,预期功能表明一类用户只能编辑某些“SE”值,而其他用户可以编辑所有值并创建新评论。为了促进这一点,已经为审查实施了实体属性级别的安全性。

问题

审阅表单正确呈现,除了一小部分随机选择的值的输入元素(40 个中的 8 个)仅在编辑现有记录时呈现为只读/禁用,但在创建新记录时没有问题记录。使用 AppModule 测试功能进行测试时,观察到相同的结果:测试用户只能为新记录编辑相同的八个值,而对于新记录和现有记录,所有其他值都是可编辑的。

细节

这些值的 View Object 和 Entity Object Attributes 都配置了Updatable属性设置为Always。这些值包括一些前面提到的“SE”值,但不是全部——也不是所有有争议的值都包含在“SE”值组中。测试用户被设置为应用程序的管理员,即授予所有资源权利的应用程序角色。

失败的决议

我尝试将 View Object 和 Entity Object Attributes 的Updatable属性更改为While NewNever,然后将它们切换回Always - 确认每次切换都在 XML 文件中进行了更改。我已经多次检查并重新检查了 ADF 安全配置,并确认每个值的安全性是相同的与未发生问题的相同形式/实体中的其他值的值相同。在部署到新启动的集成 WebLogic Server 之前,我已经清理了应用程序并单独重建了项目(模型和 vc);在重建和重新部署之前,我已经关闭并重新启动了 JDeveloper;我什至重新启动了计算机,因为有时我的企业性质会导致 JDeveloper 出现奇怪的问题,这些问题只能通过注销或重新启动整个系统来解决。我还确认问题发生在我同事的机器上。

基本规则

由于我所处环境的性质,我无法透露应用程序的明确细节,以下建议是不可接受的。

  • 升级 JDeveloper
  • 升级 Java
  • 升级 WebLogic/WebCenter
  • 升级 ADF、JSF 或任何其他库
4

1 回答 1

0

事实证明,这个问题是由 ADF Security/JDeveloper SNAFU 引起的。有问题的实体属性在某个时候被重命名(重构),并且由于某种原因,这种更改传播到所有东西......除了属性的权限配置。Attributes 和对它们的所有其他引用使用新名称,但它们在 Entity XML 文件中的 Permission 元素仍然使用旧名称。这在直接查看 XML 之前并不明显,因为 ADFBC 实体的 JDeveloper UI 不反映 XML 编辑器中显示的警告状态。因此,解决方案是禁用和重新启用这些属性的属性级安全性,或者手动调整 XML 中的 Permission 元素的参数。

于 2015-10-30T16:08:50.097 回答