2017-10-17 187 views
0

我的問題是如何將整數值轉換爲null?以前我用Xmappr註釋和它的工作好這個註釋:如何使用BeanIO將0轉換爲空

@Text 

現在我不得不使用BeanIO,所以我嘗試:

@Field(xmlType=XmlType.Text) 

,它不工作。

單元測試需要從XML文件讀取數字才能成功。如果XML中的personNumber等於0,則必須將其寫入數組中作爲null。在這種情況下,數組應該看起來像這樣:[1,2,null]

XML文件:

<Person ...> 1 </Person> 
. 
. 
<Person ...> 2 </Person> 
. 
. 
<Person ...> 0 </Person> 

在Java註解的前面:

@Text 
private Integer personNumber; 

詮釋 - 現在Java:

@Field(xmlType=XmlType.Text) 
private Integer personNumber; 

難道這是我必須指定格式在現場註釋:

@Field(xmlType=XmlType.Text, format=....) 
private Integer personNumber; 

如果是這樣,應指定什麼格式?

+0

你試過將nillable設置爲true嗎? http://beanio.org/2.1/docs/api/org/beanio/annotation/Field.html#nillable - –

+0

「0」是否真的等於'null'?如果您的XML不應該包含人員編號,那麼爲什麼''標籤的身體不是空的? – Thomas

+0

@OHGODSPIDERS我試過了,我得到了一個錯誤:xmLType'text'不是nillable – Ensz

回答

1

當編號爲'0'時,您可以嘗試使用自定義org.beanio.types.IntegerTypeHandlerreturn null。事情是這樣的:

import org.beanio.types.IntegerTypeHandler; 

public class IntegerToNullTypeHandler extends IntegerTypeHandler { 

    /** 
    * {@inheritDoc} 
    * @see org.beanio.types.IntegerTypeHandler#createNumber(java.lang.String) 
    */ 
    @Override 
    protected Integer createNumber(String text) throws NumberFormatException { 
    if (text != null && "0".equals(text)) { 
     return null; 
    } 
    return super.createNumber(text); 
    } 
} 

要使用此TypeHandler更改您要使用該領域的TypeHandler到:

@Field(xmlType=XmlType.Text, handlerClass=IntegerToNullTypeHandler.class) 
private Integer personNumber; 

我沒有測試過這一點,但它應該工作。

相關問題