2015-06-03 195 views
0

我有一个应用程序与说2页。我在输入按钮中输入值到第一页,并发生一些验证错误。现在,而不是修复验证错误,我去到下一页,并作出一些有效的条目,然后点击条目我从第一页收到错误消息。我该如何处理? 如果我为我的appModule设置ClearCacheOnRollback为true,实际发生了什么?一旦清楚缓存何时重新填充?清除ADF缓存

我们正在使用无限任务流。我有两个主页,一个在一个国家创建不同的地区,第二个创建不同的政府学校,这些是不同的jsf页面。

回答

0

这是预期的行为,因为您的两个页面共享相同的应用程序模块实例。

如果您使用的是页面(而不是片段),则必须将每个页面放置在不同的隔离任务流中。每个隔离的任务流都有自己的应用程序模块实例 - 因此它自己的缓存。您可以很好地解释任务流程交易here

如果您使用的是碎片(例如UI Shell),除上述所有内容外,您可能还需要将ExceptionMode =“Immediate”属性添加到DataBindings.cpx文件中的“BC4JDataControl”标记中。

设置ClearCacheOnRollback =“true”仅在回退事务时相关。在实践中,我已经看到了这个标志被使用的唯一原因是产生“Rollback and preserve current row behaviour

+0

我试图ExceptionMode =“立竿见影”,但它没有显示任何改变.. – zDroid

+0

可以请你了解您的总体架构的详细信息更新您的问题:例如如果你正在使用片段,你究竟做了什么来打开两个页面,页面是同一个任务流的一部分,等等。 –

+0

用ClearCacheOnRollback编辑我的答案 –

0

我通过以下..此代码是为了我的EntityImpl类..

public void validateEntity() 

原来决心这个问题{ 尝试 { super.validateEntity(); } catch(Exception ex) { this.refresh(EntityImpl.REFRESH_UNDO_CHANGES);这个.getDBTransaction()。rollback(); }}

希望这将是有益的人..

+0

如果您有例外情况,您不会通过简单地捕获和隐藏例外来解决问题。小心这样的问题。 –