Bean-To-XML аннотации: как обрабатывать вложенную структуру - PullRequest
1 голос
/ 11 февраля 2010

Для преобразования bean-> xml в веб-сервисы мы используем Aegis из CXF (как я понимаю, он совместим с jaxb).

Это мой тип:

class C{
private int a;
private int b;
private T t;
...
}

class T{
private int t1;
private int t2;
}

Мне нужно, чтобы поле t.t1 находилось на том же уровне в XML, что и a и b в C (бин, восстановленный из xml, должен выглядеть следующим образом:

class C{ 
private int a; 
private int b;
private int t1 
}

(код клиента интересует только поле t1 из структуры T). Спасибо.

1 Ответ

1 голос
/ 11 февраля 2010

Вы можете добавить getT1() и setT1(int) к C и сделать getT() @XmlTransient

class C {
  // snip

  /**
   * JAXB only
   */
  @SuppressWarnings("unused")
  @XmlElement
  private void setT1(int t1) {
    if(t != null) {
      t.setT1(t1);
    } else {
      // TODO
    }
  }

  /**
   * JAXB only
   */
  @SuppressWarnings("unused")
  private int getT1() {
    if(t != null) {
      return t.getT1(t1);
    } else {
      // TODO
    }
  }
}
...