Форматирование SOAP-сообщений клиента CXF
Файл 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 с клиентом, потому что онильный класс XmlAdapter передается в декларацию поля в качестве аннотации.
@XmlJavaTypeAdapter(CustomXmlAdapter.class)
Кажется, нет никакого способа сообщить XmlAdapter, что поле должно иметь 2 цифры после десятичной точки.
Количество цифр дроби изменяется от элемента к элементу. У меня также нет доступа для изменения WSDL.
Есть ли способ отформатировать эти элементы, соблюдая количество десятичных знаков, указанное в WSDL?