【问题标题】:using RESTlet, XStream annotations seem to have no effect使用RESTlet,XStream注解似乎没有效果
【发布时间】:2010-02-20 00:40:40
【问题描述】:

在我的 POJO 中使用 @XStreamOmitField 似乎没有任何效果。带注释的字段仍然以 xml 或 json 表示形式公开。

@XStreamAlias("Pojo")
@Entity
public class Pojo {
    private String name;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long key;

    @XStreamOmitField
    private String hidden;

    public Pojo(String name, String hidden) {
        this.name = name;
        this.hidden = hidden;
    }
}

在服务器资源中

@Get
public Pojo test() {
    Pojo pj= new Pojo("hansi","hinter");
    return pj;
}

了解我

<com.myComp.ORMTest.Pojo>
  <name>hansi</name>
  <hidden>hinter</hidden>
</com.myComp.ORMTest.Pojo>

任何想法为什么忽略注释?

【问题讨论】:

  • 好吧,这似乎不是让 GAE、RESTlet 和 XStream 一起工作的唯一问题。我现在正在寻找另一种解决方案。
  • 您好,该解决方案对您有用吗?你是怎么应用的?我也有同样的问题:stackoverflow.com/questions/66794041/…
  • @fireburn ,对不起,我不记得我是如何解决这个问题的。这是 11 年前的事了。

标签: java restlet xstream


【解决方案1】:

您必须告诉 XStream 显式处理注释:

XStream xstream = new XStream();
xstream.processAnnotations(MyClass.class);

或者,您应该添加此代码来告诉 XStream 处理所有注释:

xstream.autodetectAnnotations(true);

【讨论】:

  • 请注意:注解的自动检测仅适用于序列化,反序列化。您必须处理每个类(或它们的数组)才能解析 XML。
【解决方案2】:

想到两件事:

1.) 您是否告诉 XStream 解析注释?

2.) 您的 Web 框架是否可能使用代理来访问 pojo 而那些不委托注释? (发生在一个使用 Apache Tapestry 的朋友身上)

【讨论】:

  • 很好的线索。将开始朝那个方向挖掘。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 2018-05-18
  • 1970-01-01
  • 2010-12-24
  • 2020-07-04
  • 2014-11-06
相关资源
最近更新 更多