我有:
- 客户实体(姓名,电子邮件)
- 公司扩展客户(行业)
- Person扩展Customer(firstName,lastName)
我想设计以下屏幕:
- CustomerEditFrame,没有定义数据源
- CompanyEditScreen嵌入CustomerEditFrame
- PersonEditScreen嵌入CustomerEditFrame
然后我需要定义框架的数据源:
- 在CompanyEditScreen中,需要为框架定义companyD
- 在PersonEditScreen中,personDs需要
我看到的选项:
1)在嵌入框架的所有屏幕中,使用相同的数据源名称(例如customerDs),以便可以在框架中注入:令人困惑,如果我有公司数据源,我想将其称为companyDs而不是customerDs
2)从帧中调用getDsContext()。get(ds_id):nok,因为ds的名称改变了
3)从框架中,迭代getDsContext()。getAll()并在Customer类或子类上查找数据源并确保只有一个:不安全,不确定是否正确的一个
4)在屏幕上,例如CompanyEditScreen,在init()方法中将companyDs分配给帧:没有方法本身这样做
查看了所有样本(包括采样器代码)。更接近的情况是Sales示例的OrderEdit屏幕,它根据Operation类型动态打开一个帧。它不包括继承,但使用的解决方案基于数据源名称(第一个选项,在处理子类时我觉得很困惑)。
我该怎么办?
答案 0 :(得分:1)
我建议将实体实例传递给框架,而不是传递或引用整个数据源,如here所述。
当具有两个包含相同实例的数据源(屏幕中的一个和嵌套框架中的一个)的屏幕将被提交时,将不会有任何重复,因为屏幕将所有脏数据源中的数据收集到一个{{1} }。