【问题标题】:Oracle ADF: How to populate DepartmentId value from managed backing or managed beansOracle ADF:如何从托管支持或托管 bean 填充 DepartmentId 值
【发布时间】:2015-04-03 02:03:59
【问题描述】:

我有一个名为 addPage.jsf 的页面,其中我将部门视图 1 数据控件拖放为表单。我正在使用 hr 模式的部门表。在 createInsert 操作之后,我将进入除部门 ID 之外的部门表的空字段的页面。我需要从支持 bean 或托管 bean 填充部门 ID。如下所示

我尝试了以下方法。在此页面的支持 bean 中,我有一个 int 类型的字段 idVal 以及用于此的 setter 和 getter。场地。在 departmentId 的属性检查器中,我粘贴了 #{backingBeanScope.backing_addPage.idVal}。但是当我按下提交记录时,它没有插入到 db 并显示一些错误。

错误 AppModule.DepartmentsView1 中的属性 DepartmentId 是必需的。

如果哪里有错,请纠正我。

我的要求是我有从视图对象创建的表单,我需要从支持 bean 或托管 bean 填充 id 值,以便用户无需输入 id 值。

【问题讨论】:

  • 必填字段消息是否与DepartmentId字段相关联?对应的bean的作用域是什么?您至少需要一个视图范围的托管 bean,以便在您进行的每次回发时维护 bean 的实例,如果我是您,我不愿意向最终用户显式显示此类自动生成的键值.
  • 感谢您的宝贵时间。我将 bean 的范围设为会话。但是没用。同样的错误。实际上,我的应用程序需要向用户显示 id。
  • 这条消息,Error Attribute DepartmentId in AppModule.DepartmentsView1 is required 表示该字段未提供任何值。在提交表单之前,该值可能会以某种方式丢失(我不熟悉 Oracle-ADF,如果它必须对具体问题做一些事情)。

标签: java jsf oracle-adf jdeveloper


【解决方案1】:

这样做的推荐方法是从 DepartmentVORowImpl.create(AttributeList) 方法填充部门 id,如下所示:

 @Override
 protected void create(AttributeList attributeList) {

        super.create(attributeList);

        this.setDepartmentId(....);
 }

如果您使用 db 序列(Oracle db)来生成部门 id 值,您可以使用以下代码:

@Override
public void create(AttributeList attributeList) {
  super.create(attributeList);
  SequenceImpl seq = new SequenceImpl("LOG_SEQ", getDBTransaction());
  Number seqNextval = seq.getSequenceNumber();
  setDepartmentId(seqNextval);
}

【讨论】:

    【解决方案2】:

    点击提交时,您是直接调用操作绑定还是调用某个方法,然后以编程方式调用操作绑定..?

    另外请告诉我您是如何调用 createInsert 的?它以声明方式或以编程方式..?

    【讨论】:

      猜你喜欢
      • 2015-06-12
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2012-01-17
      • 2011-11-23
      • 1970-01-01
      • 2013-01-31
      • 2011-06-10
      相关资源
      最近更新 更多