2015-01-26 234 views
0

我有一個我無法弄清的業務需求。我有一個java類,其中我使用這樣的BigDecimal初始化貨幣值。不能以XML格式顯示BigDecimal

public class EncounterCharge { 

    BigDecimal TotalCharge = new BigDecimal(0); 

而且我有一個getter和setter。二傳手是字符串和吸氣返回的BigDecimal

/** 
* @return the totalCharge 
*/ 
@XmlElement(name = "TotalCharge") 
public BigDecimal getTotalCharge() { 
    return TotalCharge; 
} 
/** 
* @param totalCharge the totalCharge to set 
*/ 
public void setTotalCharge(String totalCharge) { 
    TotalCharge = new BigDecimal(totalCharge).setScale(2, BigDecimal.ROUND_HALF_UP); 
} 

的問題是,企業希望取消設置的BigDecimal值沒有出現在XML。目前它的確如此<totalCharges>0</totalCharges>.我們不希望它出現。但是,如果它明確設置爲0,那沒關係。有任何想法嗎?

+0

也許我可以不喜歡它初始化爲0.001和檢查(在某種程度上)如果值是0.001,而不是做XML,如果它是價值。這是我能想到的唯一的事情。 – Rob 2015-01-26 21:16:04

+1

如果'totalCharges'爲'null',它會在XML中呈現嗎? – 2015-01-26 21:30:36

+0

是的,這是解決方案。我會添加它。 TY! – Rob 2015-01-27 13:25:20

回答

1

@XmlTransient 註釋。如果您需要填充該字段,則必須將該值設置爲空。這是因爲默認情況下,@XmlElementrequired狀態爲false,因此它忽略了null值。

0

正如Buhake所說,如果您將totalCharges設置爲null,它可以正常工作。使用setter將其設置爲BigDecimal。

@XmlTransient是不包括領域,但它沒有條件。如果未初始化,我們不希望包含該字段。

這是另一個關於XMLTransient的教程。謝謝大家。

http://blog.bdoughan.com/2012/04/jaxb-and-unmapped-properties.html