JAXB marshalling dla BigDecimal za pomocą fractionDigits

Oto mój problem. Dostałem XSD, do którego powinien być zgodny mój wygenerowany plik XML. Używającorg.apache.cxf.cxf-xjc-plugin wtyczka maven i zewnętrzny plik powiązań Generuję kod źródłowy. Ale kiedy próbuję połączyć mój obiekt, wygenerowany XML nie spełnia moich wymagań.

Mój XSD zawiera następujące elementy:

<xsd:element maxOccurs="1" minOccurs="0" name="amount">
  <xsd:simpleType>
    <xsd:restriction base="xsd:decimal">
      <xsd:totalDigits value="13" />
      <xsd:fractionDigits value="2" />
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element>
...
<xsd:element maxOccurs="1" minOccurs="0" name="rate">
  <xsd:simpleType>
    <xsd:restriction base="xsd:decimal">
      <xsd:totalDigits value="8" />
      <xsd:fractionDigits value="5" />
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element>

Wygenerowany fragment XML wygląda tak:

<amount>109.5</amount>
...
<rate>10.25</rate>

Podczas gdy oczekiwałem, że będzie to:

<amount>109.50</amount>
...
<rate>10.25000</rate>

Czy istnieje sposób na rozwiązanie tego problemu w czysty sposób?

Wolałbym nie pisać kilku adapterów dla każdego singlatotalDigits, fractionDigits połączenie. A ponieważ XSD może ulec zmianie, chciałbym pozostawić wygenerowany kod źródłowy nietknięty.

questionAnswers(4)

yourAnswerToTheQuestion