0

我正在使用使用 Java EE 编写的成熟生产代码。为了处理不寻常的数据条件,我插入了一个有效的健全性检查,但增加了一些不必要的成本。该架构的工作原理如下:

  1. 在第 1 页上,用户从列表中选择一个项目并单击“开始”按钮。
  2. 对 Page 1 的视图范围控制器 bean 的 Ajax 调用会创建一个昂贵的大数据对象 (BEDO),然后对其进行完整性检查以确保其有效。
  3. 如果 BEDO 有效,则页面 1 通过 Javascript 将自身转发到页面 2。
  4. Page 2 的视图范围的支持 bean 创建一个新的 BEDO 副本,与用于健全性检查的副本相同。

我创建了两次相同的 BEDO,并且只是扔掉了第一个。我想找出一个浪费更少处理周期的解决方案。

所以我的问题是,将 BEDO 从第 1 页的控制器 bean 获取到第 2 页的支持 bean 的最佳低影响方法是什么?让 Page 1 的控制器访问支持 bean 不起作用;因为第 2 页的支持 bean 是视图范围的,所以当用户实际被发送到第 2 页时,它会重新创建。

我可以更改第 2 页的支持 bean 的范围,但我宁愿不这样做。因为这是成熟的生产代码,所以我非常警惕引入回归错误。这就是我所说的“低影响”;我不想和现有的架构混在一起,就像我必须做的那样。

4

1 回答 1

1

获胜者是……闪光范围。

一方面:

FacesContext.getCurrentInstance().getExternalContext().getFlash().put("bedo", bedo);

另一方面:

Object bedoObj = FacesContext.getCurrentInstance().getExternalContext().getFlash().get("bedo");
if (bedoObj != null && bedoObj instanceof BigExpensiveDataObject) {
   ...

...我得到了我正在寻找的行为。

于 2013-05-03T18:33:47.990 回答