我关注了 https://developers.google.com/web-toolkit/articles/mvp-architecture。在他们的模型中,他们使用一个类“Contact”和一个名为“ContactDetails”的类的轻量级版本。因为我真的不需要精简版,所以我删除了 ContactDetails 并将其替换为 Contact。
现在我遇到了例外
Type 'org.eclipse.persistence.indirection.IndirectList' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = {IndirectList: not instantiated}
原因是,正如我在这里发现的 (http://stackoverflow.com/a/6778986/1141785),Contact 类是一个使用 Persistence API 技术的类,它不应该被发送到网络上。
那么 ContactDetails 类是我应该通过线路发送的 DTO 类吗?有没有办法避免使用这个额外的类?
我想避免使用“轻”版本的原因是,我想使用 FieldUpdater 在 DataGrid 中编辑 Contact 类。
当我使用 DTO 类时,我有什么优势吗?
我怎样才能避免我在 Contact 和 ContactDetails 类中有这么多重复的代码,而它们应该几乎是名字?