2

私は Dozer を使用しており、WebService からの JAXB オブジェクトを、アプリケーションのサービス層にあるビジネス オブジェクトにマッピングしています。いくつかの特定のケースでは、文字列値のコードを文字列値の人間が読める説明にマップする必要があります。例: "FLT" は "FLAT" にマップされ、"TRP" は "TRAP" にマップされます。私はこれらの型マッピングをたくさん持っています。

DozerConverter を継承し、convertTo () とconvertFrom ()の 2 つの抽象メソッドを実装する ことで、カスタムDozerコンバータを実装しています。これらの中で、「FLT」を「FLAT」に、「FLAT」を「FLT」にそれぞれマップしたかったのですが、残念ながら Dozer は正しいconvertTo () またはconvertFrom () メソッドを正しく呼び出しません。

他の誰かがこの問題を抱えていて、私を正しい方向に向けることができますか? ありがとう

4

2 に答える 2

2

POJOを制御できる場合は、これらの文字列を列挙型として扱うことができます。Webサービス側とビジネスロジック側の列挙型を定義する必要がありますが、コンバーターやxmladapterを使用するよりも洗練されたソリューションだと思います。

列挙型の例:

public enum ENUM_WS {
  @XmlEnumValue("TRP") TRAP,
  @XmlEnumValue("FLT") FLAT
}

public enum ENUM_BL {
  @XmlEnumValue("TRAP") TRAP,
  @XmlEnumValue("FLAT") FLAT
}
于 2011-11-23T12:58:14.220 に答える
0

この問題は JAXB レベルで対処できます。これにはXmlAdapter、XML 文字列 (つまり FLT) をオブジェクト文字列 (つまり FLAT) に変換する を利用できます。

XML スキーマからオブジェクト モデルを生成している場合は、次の方法が役立ちます。

于 2011-10-28T18:08:42.963 に答える