我正在尝试创建一个编辑器,用户可以在其中选择现有项目或内联创建新项目。例如,想象一下典型的人-地址关系。我想要一个表单,用户在编辑一个人时,可以从一组现有地址中选择一个地址,也可以创建一个新地址,而无需移动到单独的表单。
天真地,这似乎需要两个不同的编辑器来处理同一个属性。假设我有一个Person
whichAddress getAddress()
和setAddress(Address)
。我的PersonEditor
班级需要有两个名为address
不同类型的子编辑;一个选择一个现有的人,另一个是编辑器的组合以进入该Address
类型并允许编辑其属性。
通过阅读 上的文档CompositeEditor
,似乎我必须利用它来动态选择子编辑器。但是,文档不够详细,无法让我真正理解应该如何实现接口。我已经尝试查看线索的实现方式ListEditor
和实施方式,但还是有用的。由于我的副编辑编辑不同的路径,这似乎不太合适。OptionalFieldEditor
ListEditor
例如,尝试使用CompositeEditor
,我不清楚在我的情况下应该返回什么createEditorForTraversal
以及getPathElement
应该返回什么。
如何动态地将两种不同类型的编辑器之一附加到一个属性?