我想根据请求和用户选择性地序列化字段。如何告诉JAXB在运行时序列化哪些字段?
例如,管理员用户将被提供一个带有一些额外字段的XML。而普通用户会得到没有这些字段的XML。其次,目前我使用@XmlIDREF
来防止引用对象或集合的不必要的扩展。
但有时候用户可能需要这些细节。对被引用的对象进行第二次请求是不可取的。我想让用户告诉服务器XYZ属性应该扩展(即包括完整的对象,而不仅仅是其参考)
给定一个用户和一个请求,根据业务逻辑我可以判断哪些字段应该被序列化。现在我该如何将这些信息传达给JAXB?
尽可能地,我不想创建一个XSD。请注意,请求参数是动态的。序列化的字段在运行时决定。所以我不能使用硬编码的东西 - 比如@Transient
或@XmlIDREF
注释。
谢谢,这很好。效果很好。但是,我在编辑子图中的ID字段时遇到了一些问题。我有一个类A的对象列表(包装在一个JaxbList中)。类A的每个对象都有一个B类对象的列表。我通过传递给JaxbList.class来创建对象图。从那我为B创建一个子图.A按预期序列化,但是子图的ID字段没有被序列化。如果我通过将B保存为主图(而不是子图)来尝试编组,则按预期序列化ID字段。任何想法可能是错的?我试着注释掉XmlID注释。它仍然发生。 – Dojo 2013-05-14 13:43:14