57.2.3. 3.DataField
DataField アノテーションは、フィールドの プロパティーを定義します。各データフィールドは、レコード内のその位置、タイプ(文字列、int、date、…)、およびオプションでパターンで識別されます。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| DataField | all | プロパティー |
| パラメーター名 | タイプ | 必須/任意 | デフォルト値 | Info |
|---|---|---|---|---|
| pos | int | ✓ | 入力レコードのデータの位置は、1 (必須)から開始する必要があります。position パラメーターを参照してください。 | |
| アライメント | 文字列 | R | テキストを右または左に合わせます。<tt>R</tt> または <tt>L</tt> の値を使用します。 | |
| clip | boolean | false | 固定の長さを使用するときに許可される長さを超えた場合は、フィールドのデータをクリップします。 | |
| columnName | 文字列 |
ヘッダー列の名前(任意)。プロパティーの名前をデフォルトとして使用します。 | ||
| decimalSeparator | 文字列 | BigDecimal 番号で使用する 10 進数のセパレーター | ||
| defaultValue | 文字列 | 値が設定されていない場合のフィールドのデフォルト値 | ||
| delimiter | 文字列 | フィールドに変数の長さがある場合に使用される任意の区切り文字 | ||
| groupingSeparator | 文字列 | 123,456.789 のようにグループ化して番号付けしたい場合は、BigDecimal 番号で使用する Separator をグループ化します。 | ||
| impliedDecimalSeparator | boolean | false | 指定した場所に 10 進数のポイントが暗示されているかどうかを示します。 | |
| 長さ | int | 0 | レコードが固定の長さに設定されている場合のデータブロックの長さ(文字数) | |
| lengthPos | int | 0 | このフィールドで想定される固定の長さを定義するレコード内のデータフィールドを識別します。 | |
| メソッド | 文字列 | このようなカスタマイズを DataField に適用するために呼び出すメソッド名。これは datafield 自体の メソッドである必要があります。または、クラスのメソッドの静的完全修飾名を指定する必要があります(例:ユニットテスト org.apache.camel.dataformat.bindy.csv.BindySimpleCsvFunctionWithExternalMethodTest.replaceToBar を参照)。 | ||
| name | 文字列 | フィールドの名前(オプション) | ||
| paddingChar | char | レコードが固定の長さに設定されている場合の pad への文字 | ||
| pattern | 文字列 | Java フォーマッター(例による SimpleDateFormat)がデータを変換するために使用するパターン(オプション)。パターンを使用する場合は、バインドデータ形式でロケールを設定することが推奨されます。us などの既知のロケールに設定するか、または default を使用してプラットフォームのデフォルトロケールを使用します。 | ||
| position | int | 0 | 生成された出力メッセージのフィールドの位置(1 から開始する必要があります)。CSV 生成(出力メッセージ)のフィールドの位置が入力位置(pos)とは異なる比較する必要がある場合に使用する必要があります。pos パラメーターを参照してください。 | |
| 精度 | int | 0 | 作成される \{@link java.math.BigDecimal} 番号の精度 | |
| 必須 | boolean | false | フィールドが必須かどうかを示します。 | |
| 丸め | 文字列 | CEILING | BigDecimal 値をラウンド/スケーリングするために使用されるラウンドモード:UP, DOWN, CEILING, FLOOR, HALF_UP, HALF_DOWN,HALF_EVEN, UNNECESSARY e.g : Number = 123456.789, Precision = 2, Rounding = CEILING Result : 123456.79 | |
| timezone | 文字列 | 使用するタイムゾーン。 | ||
| trim | boolean | false | 値をトリミングする必要があるかどうかを示します。 |
ケース 1: pos
このパラメーター/属性は CSV レコードのフィールドの位置を表します。
Position
この例では分かるように、位置は 1 から始まりますが、クラス Order で 5 に進みます。2 から 4 までの数字は、Client クラスで定義されます(ここで参照)。
別のモデルクラスで位置が続行されます。
case 2 : pattern
パターンではデータの形式を補完または検証できる
パターン
ケース 3: 精度
精度は、数値の 10 進数部分を定義する場合に便利です。
精度
ケース 4: 位置は出力とは異なります。
position 属性は、生成された CSV レコードにフィールドを配置する方法をバインドします。デフォルトでは、使用される位置は属性 pos で定義される位置に対応します。位置が異なる場合(つまり、マーシャリングからマーシャリングの比較)、位置 を使用してこれを示すことができます。
以下に例を示します。
出力では位置は異なります。
アノテーション @DataField のこの属性は、@CsvRecord アノテーションの属性 isOrdered = true と組み合わせて使用する必要があります。
ケース 5 : 必須
フィールドが必須の場合は、required 属性を true に設定して使用します。
必須
このフィールドがレコードに存在しない場合は、パーサーにより以下の情報を含むエラーが発生します。
Some fields are missing (optional or mandatory), line :
Some fields are missing (optional or mandatory), line :
case 6 : trim
フィールドに、処理される前に削除する必要がある、および/または末尾にスペースがある場合、単に属性 trim を true に設定します。
Trim
case 7 : defaultValue
フィールドが定義されていない場合は、は defaultValue 属性で指定された値を使用します。
デフォルト値
case 8 : columnName
@CsvRecord にアノテーション generateHeaderColumns = true がある場合にのみ、プロパティーの列名を指定します。
列名
この属性は、オプションのフィールドにのみ適用されます。