Jaxb适配器无法正常工作

时间:2018-07-09 11:31:35

标签: java spring-batch jaxb2

在我们的Spring Batch应用程序上,我为应用程序要拆封的XML文件的元素之一定义了一个BigDecimal适配器:

public class BigDecimalAdapter extends XmlAdapter<String, BigDecimal> {

  @Override
  public String marshal(BigDecimal v) throws Exception {
    return v != null ? v.toString() : null;
  }

  @Override
  public BigDecimal unmarshal(String v) throws Exception {
    if(v == null || "".equals(v.trim())) {
      return null;
    }
    return new BigDecimal(v.trim());
  }

}

其架构如下:

<xs:element type="xs:decimal" name="COUPON_RATE" />

但是,即使定义了适配器,

@XmlElement(name = "COUPON_RATE")
@XmlJavaTypeAdapter(BigDecimalAdapter.class)
protected BigDecimal couponRate;

解析仍然失败:

[org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 620; cvc-datatype-valid.1.2.1: '' is not a valid value for 'decimal'.]]

我已经调试了应用程序,并确认正在调用适配器代码。我检查过的所有资源似乎都表明我的代码是正确的,因此我想知道可能是问题所在还是我只是误解了某些内容。 我也尝试过使用nillablerequired属性,但是没有运气。

我在这里想念什么?

0 个答案:

没有答案