我正在使用使用Java EE编写的成熟生产代码。为了处理一个不寻常的数据条件,我已经插入了一个有效的健全性检查,但是增加了一些不必要的成本。架构的工作原理如下:
我创造了两次相同的BEDO,只是扔掉了第一个。我想找出一个可以减少处理周期的解决方案。
所以我的问题是,将BEDO从控制器bean转移到支持bean的最佳低影响方式是什么?让Page 1的控制器访问辅助bean是行不通的;因为Page 2的支持bean是视图范围的,所以当用户实际被发送到第2页时,它会重新创建。
我可以改变支持bean的范围,但我不愿意。因为这是成熟的生产代码,所以我非常谨慎地引入回归错误。这就是我的意思"低影响&#34 ;;我不想贪图现有的架构,而不是我不得不这样做。
答案 0 :(得分:1)
获胜者是...... Flash范围。
一方面就是这样:
FacesContext.getCurrentInstance().getExternalContext().getFlash().put("bedo", bedo);
另一方面:
Object bedoObj = FacesContext.getCurrentInstance().getExternalContext().getFlash().get("bedo");
if (bedoObj != null && bedoObj instanceof BigExpensiveDataObject) {
...
......我完全得到了我正在寻找的行为。