2014-12-02 100 views
1

我有下一個問題。 我必須定義XLS的屬性爲Integer。當XMLAdapter(爲我定義)接收到的值,而不是接收空或空,你會收到0(因爲de整數解析emty''值爲0),這在我的情況是不正確的。我怎麼知道這個值是來自「」還是0?我需要如果屬性值是「」,值應該是空值;如果爲0,應該爲0.對我而言,這是JAXB中的一個錯誤。 我看過:
JAXB: how to make JAXB NOT to unmarshal empty string to 0
但它對我來說不是一個解決方案。
我能做什麼?
我定義英里XMLAdapter:
JAXB如何解析空值字符串爲空整數

public class IntegerAdapter extends XmlAdapter<Integer, Integer> { 
    @Override 
    public Integer marshal(Integer arg0) throws Exception { 
     return arg0; 
    } 
    @Override 
    public Integer unmarshal(Integer v) throws Exception { 
     return v; 
    } 
} 

我不定義它像XmlAdapter<String, Integer>,因爲XLS屬性的定義必須是整數。 謝謝!

回答

1

您應該使用,而不是執行以下操作:

XmlAdapter<String, Integer> 

我不定義它像XmlAdapter<String, Integer>,因爲XLS屬性的 定義必須是整數。

您可以使用@XmlSchemaType註釋來設置所需的模式類型。

@XmlJavaTypeAdapter(IntegerAdapter.class) 
@XmlSchemaType(name="integer") 
public Integer getAge() { 
    return age; 
} 
+1

優秀!非常感謝! – Cralbert 2014-12-02 20:49:13

+0

可以請你分享代碼如何實現它實際上我無法管理this.i面臨同樣的問題與長 – arjun 2015-10-06 11:45:45