В файле WSDL, который я использовал для создания клиента CXF, определено это определение элемента:
<xsd:element name="Rate">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="18" />
<xsd:fractionDigits value="2" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
Однако, когда я пытаюсь отправить сообщение SOAP, количество цифр после десятичной точки превышает максимальное значение. Например, я получаю 2.48862, ожидая 2.48. Чтобы решить эту проблему, я планировал реализовать XmlAdapter для маршаллинга значений, однако я не могу сопоставить элемент в WSDL с клиентом, потому что класс onyl XmlAdapter передается в объявление поля в виде аннотации.
@XmlJavaTypeAdapter(CustomXmlAdapter.class)
Кажется, нет способа сообщить XmlAdapter, что поле должно иметь 2 цифры после десятичной точки.
Число цифр дроби изменяется от элемента к элементу. У меня также нет доступа к изменению WSDL.
Есть ли способ форматировать эти элементы при наблюдении числа десятичных точек, указанных в WSDL?