2015-01-26 52 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