2017-10-17 19 views
0

私の質問は、整数値を変換する方法です。〜null?以前私はXmapprアノテーションを使用し、それがこの注釈では良い仕事を:BeanIOでnullを0に変換する方法

@Text 

は、今私はBeanIOを使用する必要がありますので、私が試した:

@Field(xmlType=XmlType.Text) 

をし、それが働いていません。

単体テストでは、XMLファイルから数値を読み取り、成功する必要があります。 XMLからのpersonNumberが0の場合は、配列にnullとして書き込まなければなりません。その場合、配列は次のようになります。[1,2、null]

XMLファイル:以前にJavaで

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

注釈:今、Javaで

@Text 
private Integer personNumber; 

は注釈:

@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」は実際には「ヌル」に相当しますか?あなたの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; 

私はこれをテストしていませんが、それは動作するはずです。

関連する問題