ユーザーが既存のアイテムを選択するか、新しいアイテムをインラインで作成できるエディターを作成しようとしています。たとえば、典型的な人と住所の関係を想像してみてください。ユーザーが人を編集するときに、既存の住所のセットから住所を選択するか、別のフォームに移動せずに新しい住所を作成できるフォームが必要です。
単純に、これには同じプロパティに対して2つの異なるエディターが必要なようです。とを持っているPerson
とAddress getAddress()
しましょうsetAddress(Address)
。私のクラスには、異なるタイプのPersonEditor
名前の2つのサブエディターが必要です。address
1つは既存の人物を選択し、もう1つは編集者の複合体を選択してAddress
タイプに分類し、そのプロパティを編集できるようにします。
のドキュメントを読むとCompositeEditor
、サブエディタを動的に選択するためにそれを利用する必要があるようです。ただし、ドキュメントは、インターフェイスの実装方法を実際に理解するのに十分なほど詳細ではありません。手がかりのためにどのように実装されているかを調べてみましたが、役に立ちましListEditor
た。私の副編集者がさまざまなパスを編集しているので、ぴったりとは思えません。OptionalFieldEditor
ListEditor
たとえば、を使おうとすると、CompositeEditor
何が返ってくるのかわからないのです。createEditorForTraversal
getPathElement
2つの異なるタイプのエディターの1つを1つのプロパティに動的にアタッチするにはどうすればよいですか?