不显示在XML中未设置BigDecimal

时间:2015-01-26 21:04:01

标签: java xml

我有业务要求,但我无法弄明白。我有一个java类,其中我使用BigDecimal初始化货币值,如此。

public class EncounterCharge {

    BigDecimal TotalCharge = new BigDecimal(0);

我有一个吸气剂和二传手。 Setter是String,getter返回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,那就没关系。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用@XmlTransient 对其进行注释。如果需要填充字段,则必须将值设置为null。这是因为@XmlElement默认情况下required状态为false,因此会忽略null值。

答案 1 :(得分:0)

正如Buhake所说,如果你将totalCharges设置为null,它可以正常工作。使用setter将其设置为BigDecimal。

@XmlTransient不包括字段,但不是有条件的。如果没有初始化,我们希望不包括该字段。

这是另一篇关于XMLTransient的教程。谢谢大家。

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