1

与问题CUBA有关:实体继承

我有:
- 客户实体(姓名、电子邮件)
- 公司扩展客户(行业)
- 人员扩展客户(名字、姓氏)

我想设计以下屏幕:
- CustomerEditFrame,未定义数据源- CompanyEditScreen 嵌入
CustomerEditFrame
- PersonEditScreen 嵌入 CustomerEditFrame

然后我需要定义框架的数据源:
- 在 CompanyEditScreen 中,需要为框架定义
companyDs - 在 PersonEditScreen 中,需要为 personDs

我看到的选项:
1)在嵌入框架的所有屏幕中,使用相同的数据源名称(例如 customerDs),以便可以将其注入框架:令人困惑,如果我有一个公司数据源,我想将其称为 companyDs 而不是 customerDs
2) 从框架中,调用 getDsContext().get(ds_id) : nok,因为 ds 的名称发生了变化
3) 从框架中,迭代 getDsContext().getAll() 并在 Customer 类或子类上查找数据源并确保只有一个:不安全,不确定得到正确的一个
4) 从屏幕,例如 CompanyEditScreen,在 init() 方法中将 companyDs 分配给框架:本身没有这样做的方法

浏览了所有示例(包括采样器代码)。更接近的案例是 Sales 示例的 OrderEdit 屏幕,它根据 Operation 类型动态打开一个框架。它不包括继承,但使用的解决方案基于数据源名称(第一个选项,我在处理子类时感到困惑)。

我应该怎么做 ?

4

1 回答 1

1

我建议将实体实例传递给框架,而不是传递或引用整个数据源,如此所述。

当具有包含相同实例的两个数据源(一个在屏幕中,一个在嵌套框架中)的屏幕将被提交时,将不会有任何重复,因为屏幕将所有脏数据源中的数据收集到一个Set.

于 2016-09-01T11:08:25.730 回答