ADF流量损失当前行选择

时间:2014-03-11 18:32:38

标签: oracle jsf oracle-adf jdeveloper

我正在使用JDeveloper 11.1.1.7.0,我遇到了这个问题。 我会尽力解释一下。

我有一个流程。名为 mainTable.jspx 的第一个视图有一个包含当前数据的表和一个 New Data 按钮。 表中的每一行都有一个 setCurrentRowWithKey 链接来编辑所选数据。使用此链接,将选择当前行。

  • 编辑链接操作是编辑流程,其中navegates为 editData.jspx
  • “新建数据”按钮操作是流程,其中包含创建操作,然后使用空字段 editData.jspx

editData.jspx 行为是正确的,因此它包含 new 流的空字段或带有 edit 流的已完成字段。

editData.jspx 中,我有一个自定义按钮检查并带有操作。我做了一些检查,所以如果有错误,我会用FacesContext.addMessage显示一条错误消息。此按钮不会执行删除提交回滚操作。

嗯,我的问题出现在这些步骤中:

  • 转到 mainTable.jspx
  • 单击编辑链接
  • 转到 editData.jspx
  • 点击检查按钮。一次检查不正常,因此会显示错误消息。到现在为止,下一个错误的步骤发生
  • 当前选择数据将被删除,表格中的先前数据行将显示在 editData.jspx
  • 当我点击返回按钮返回mainTable.jspx中的表格时,表格中未显示步骤2中选择的初始行。
  • 在数据库中,所有数据都存在,甚至是 ghost 数据。

我不知道发生了什么。在有问题的按钮中没有删除提交回滚操作。

我该如何解决这个问题?在流程中有什么我没做的吗?

非常感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

嗯,问题发生的原因是迭代器使用不当。

我的解释的某些检查中,一些步骤从迭代器获取当前行,并重用相同的迭代器以通过 executeQuery 获取另一个行集,因此当前行是失去了它意味着一个不一致的状态。

解决方案是从同一视图创建另一个不同的迭代器,但是使用不同名称的不同迭代器。因此, main 迭代器保留当前行,其他附加操作,查询等由不同的迭代器创建。

希望它有所帮助。此致