2012-05-10 2 views
1

BigDecimalAdapter를 사용하여 내 모델의 모든 BigDecimal 유형을 형식화합니다. 패키지 정보 파일의 선언은 다음과 같습니다.MOXy JAXB : 다른 정밀도로 BigDecimalAdapter를 사용하는 방법

@XmlJavaTypeAdapters({@XmlJavaTypeAdapter(value=BigDecimalAdapter.class,type=BigDecimal.class)}) 

제 문제는 다른 precision으로 여러 BigDecimal을 형식화해야한다는 것입니다. 값이있는 경우, 이제

public class Invoice { 

    @XmlPath("InvoiceTotals/InvoiceTotal/text()") 
    private BigDecimal invoiceTotal; 
} 

public class Discount { 

    @XmlPath("DiscountAmount/text()") 
    private BigDecimal discountAmount; 

} 

:

invoice.invoiceTotal = 10.000000000; 
discount.discountAmount = 25.00000000; 

어떻게 내가 마지막에 다음의 결과를 얻을 수 있습니다

예를 들어

, 나는 두 개의 개체가 XML?

<invoiceTotal>10.00<invoiceTotal/> 
<discountAmount>25.0000<discountAmount/> 

즉, 첫 번째 경우에는 2 개의 소수점들이 있고 두 번째 경우에는 4 개의 소수점 이하 자릿수를 의미합니다.

대단히 감사합니다.

답변

1

각각 BigDecimal의 표현에 대해 XmlAdapter을 입력해야합니다. 그런 다음 XmlAdapter을 패키지 레벨에 등록하는 대신 등록 정보 레벨에 등록해야합니다. 아래는 그 예입니다.

송장

public class Invoice { 

    @XmlPath("InvoiceTotals/InvoiceTotal/text()") 
    @XmlJavaTypeAdapter(value=BigDecimalTwoPlacesAdapter.class) 
    private BigDecimal invoiceTotal; 
} 

할인

public class Discount { 

    @XmlPath("DiscountAmount/text()") 
    @XmlJavaTypeAdapter(value=BigDecimalFourPlacesAdapter.class) 
    private BigDecimal discountAmount; 

} 
+1

감사합니다! 이것은 정말로 도움이됩니다. – rocotocloc

관련 문제