2016-07-07 1 views
1

私はapache camelとbindyを使用してcsvファイルのアンマーシャルを試みます。@DataFieldのdefaultValueパラメータを設定する方法Camelアノテーションをnullの代わりに空のStringに設定しますか?

@DataField(pos = 5, defaultValue = "") 

私のcsvファイルが空の文字列を持つ列が含まれているときに問題がある:私はこのような注釈付きのいくつかのフィールドを持つモデルを作成しました。次に、アンマーシャリングの結果としてnull値を取得しました。私は空のStringも持っていたいと思います。これを取得するために注釈を書くべきですか?

答えて

0

ご迷惑をおかけします。削除するよりも、次のバージョン(2.18.0)にサポートがあるように見えるので、編集しています。

@DataFieldによって注釈されたフィールドに(CSVファイルからの)文字列トークンを変換しながら、手順は以下の通りである:

  1. 真=トリム場合、文字列トークン
  2. トリム
  3. 必要な文字列トークンが「」フィールドの種類に基づいて、適切なコンバータを取得し、スロー例外
  4. 文字列トークンがされなかった場合は、「文字列トークンにコンバータを使用」
  5. それ以外の場合はlt-stringが指定された場合は、デフォルトのコンバータ
  6. を使用します。 intは)適切な値(MIN)バージョン2.18.0を使用すると、フォーマット・インターフェースに準拠するクラスを指定することができ、新しい注釈@BindyConverterを紹介

  • そうでない場合はnullを返します(効果的にステップ#3を傍受、above)

    カスタムコンバータを使用すると、既定値を読み取り、独自の要件(上記の手順5で)に応じて変換することができます。コンバーターもステップ#4を処理する必要がありますが、これはストリングにとっては些細なことです。

  • +0

    ありがとうございましたが、私はCamel 2.17.0を使用していますが、テストはとにかく終了します:org.junit.ComparisonFailure:expected:<[]>でしたが、<[ ]>でした。値を読み取った後、私のためにトリムが機能しないようです。どんな考え? –

    +0

    申し訳ありませんが、多分私はここで間違いを犯しました。私は昨日答える前にこれをテストするコードをいくつか実行しましたが、今は再現できません。たぶん、これで遊んでいたときに私がやったことが何か他のものだったのかもしれません。私は再び試してみたり、私の答えを編集したり削除したりします...私が見つけたものによっては。 –

    関連する問題