是否可以使用一些动态标志通过JAX-B选择性地序列化类的属性?
e.g。假设我有
@XmlRootElement
public class TodoItem {
private int id;
private String title;
private String note;
// getters, setters
}
以及以下Web服务操作:
public TodoItem getTodoItemFull(int id) { .... }
public TodoItem getTodoItemMinimal(int id) { .... }
是否有可以使用的特殊注释,以便我可以在运行时决定属性“note”是否会被序列化?换句话说,getTodoItemFull()方法将返回完全序列化的类,而getTodoItemMinimal()方法将返回没有“note”xml元素的序列化类?
谢谢,!
答案 0 :(得分:1)
您可以通过将多个映射应用于对象模型来完成此操作。标准JAXB仅允许您通过注释应用一个映射。其他JAXB实现(如MOXy(我领导此实现))也允许您将元数据表示为XML:
您可以在一组元数据上构建一个JAXBContext,这些元数据完全映射“getTodoItemFull”将使用的对象模型,另一个JAXBContext构建在另一组元数据上,这些元数据部分映射了getTodoItemMininmal将使用的对象模型。 p>