【发布时间】:2013-07-05 10:45:53
【问题描述】:
一个简单的类,正在编组输出:
@XmlRootElement
public class Foobar {
// ...
void beforeMarshal(Marshaller m) {
System.out.println("beforeMarshal fired");
}
}
JAX-RS 也很简单:
@GET
public Response getResponse() {
Foobar fb = new Foobar();
// ...
return Response.ok(fb).build();
}
预期的输出将是“在Marshal 触发之前”一次,但它会触发两次?
这是正常的吗?我不认为使用额外的标志是一个好主意..
@XmlTransient
private boolean marshalled;
void beforeMarshal(Marshaller m) {
if (!this.marshalled) {
System.out.println("beforeMarshal");
this.marshalled = true;
}
}
此外,在查询资源以获取 json 输出时,它根本不会触发 marshal 事件。
【问题讨论】:
标签: jaxb eclipselink jax-rs glassfish-3 moxy