1

クラスjavax.security.auth.x500.X500Principalは final であり、(もちろん) JAXB アノテーションが付けられていませんか? では、それをより大きなオブジェクト グラフの一部としてマーシャリングするにはどうすればよいでしょうか。私はそれをそのプロパティの値で置き換えたいと思いnameます。

編集

解決策は簡単です:

final class X500PrincipalXmlAdapter
extends XmlAdapter<String, X500Principal> {
    @Override public X500Principal unmarshal(String name) {
        return new X500Principal(name);
    }

    @Override public String marshal(X500Principal principal) {
        return principal.getName();
    }
}

実際のところ、なぜ JAXB で公開されていない XMLAdapter クラスを使用できるのか疑問に思っていますが、私は確かにその方法を好みます。

4

1 に答える 1

1

XmlAdapterこのユースケースにはを使用できます。はXmlAdapter、マップできないオブジェクトをマップ可能なオブジェクトに変換するために使用されます。アノテーションXmlAdapterを使用してフィールド/プロパティに設定されます。@XmlJavaTypeAdapter

于 2013-02-25T13:26:02.733 に答える