View对象之间的双向同步

时间:2016-04-04 12:01:06

标签: oracle-adf

我在Oracle ADF中有两个视图对象。

LineVO代表订单行 - 每个产品一行。

产品通过几个属性来区分......比如" model"和"颜色"。因此,VO#1为每个模型/颜色组合包含一行。

ModelVO表示线的模型级摘要。

两个VO都有"数量"字段(整数)。

它们之间有一个ViewLink,每个都有一个访问另一个的行。

我希望实现这两个视图对象之间的双向协调,例如:

  • 当用户查询数据时,ModelVO.Quantity等于LineVO.Quantity的总和,用于关联的行
  • 当用户更新任何LineVO.Quantity时,ModelVO.Quantity会立即更新以反映新的总数
  • 当用户更新ModelVO.Quantity时,数量会在相关的LineVO行之间传播(根据我希望此处不相关的复杂业务逻辑)。

我尝试了许多不同的方法来做到这一点,并且无法让它变得完美。

现在,我正在研究将ModelVO.Quantity设置为Groovy表达式" LineVO.sum(' Quantity')"的变体。不幸的是,我尝试的所有东西都有LineVO-> ModelVO工作的总结或者从ModelVO-> LineVO工作的传播,但从来没有同时工作。

有人可以建议一种方法吗?我想在模型层(EO或VO或组合)中进行。

1 个答案:

答案 0 :(得分:0)

没关系......结果很简单:

ModelVO.Quantity必须设置为Groovy“LineVO.sum('Quantity')”并且必须将recalcExpression设置为我可以控制事物的方法,以便它只在我重新计算时重新计算更改LineVO.Quantity值。

我的方法最初不起作用的原因是,当用户更新LineVO.Quantity值并且我想重新计算时,我按ModelVO获取了lineVORow.getModelVO()行。即,通过视图访问器。

显然,返回行的某种内部副本而不是实际的行。

当我通过applicationModule.getModelVO().getCurrentRow()获得父行时,整个过程完美无缺。

我发布了另一个问题,为什么通过视图访问器访问该行不起作用。那部分对我来说仍然是一个谜。