我用來創建CXF客戶端的WSDL文件有此元素的定義:CXF客戶端SOAP消息格式化
<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.48時,我得到2.48862。爲了解決這個問題,我計劃實現一個XmlAdapter來編組值,但是我無法將WSDL中的元素映射到客戶端,因爲XmlAdapter的onyl類是作爲註釋傳遞給字段刪除的。
@XmlJavaTypeAdapter(CustomXmlAdapter.class)
似乎沒有辦法通知XmlAdapter該字段在小數點後必須有2位數字。
小數位數的數量因元素而異。我也沒有訪問權限來更改WSDL。
有沒有辦法在觀察WSDL中指定的小數點的同時格式化這些元素?
你已經看過[這個SO帖子](http://stackoverflow.com/questions/14848776/jaxb-marshalling-for-bigdecimal-using-fractiondigits)?它似乎解決了一個類似的問題。 –
是的,我已經看到它,然後我已經發布。它要求我爲每個不同數量的分數創建一個不同的類。 – regulus
什麼對你最好,取決於你的特定用例。您是否正在處理使用不同貨幣的交易金額可能需要不同精度的多幣種金融軟件?那麼你可能想要尋找一個比這更靈活的框架。另一方面,如果每個實體/財產都有自己的固定精度,那麼您應該理所當然地認爲您可能不得不爲每個實體/財產實施單獨的類別。究竟有多少種精度?如果你擔心代碼重複,那麼希望繼承類可以有所幫助。 –