48.6. 3. DataField


DataField 주석은 필드의 속성을 정의합니다. 각 데이터 필드는 레코드의 위치, 유형(문자열, int, date, …​) 및 선택적으로 패턴으로 식별됩니다.

Expand
주석 이름레코드 유형level

DataField

all

속성

Expand
매개변수 이름type정보

POS

int

mandatory - 필드의 입력 위치입니다. 1에서 …​까지 시작하는 숫자 번호 - position 매개변수를 참조하십시오.

패턴

string

선택 사항 - default value = "" -는 Date, Date 형식 지정에 사용됩니다.

길이

int

선택 사항 - 고정 길이 형식의 필드 길이를 나타냅니다.

precision

int

선택 사항 - 이름이 포맷 / 구문될 때 사용할 전체값을 나타냅니다.

패턴

string

선택 사항 - default value = "" -는 Java formatter(예: SimpleDateFormat by example)에서 데이터 포맷/검증하는 데 사용됩니다. 패턴을 사용하는 경우 바인딩 데이터 형식으로 로케일을 설정하는 것이 좋습니다. "us"와 같이 알려진 로케일으로 설정하거나 "default"를 사용하여 플랫폼 기본 로케일을 사용합니다. "default"에는 Camel 2.14/2.13.3/2.12.5가 필요합니다.

위치

int

선택 사항 - 생성된 CSV 필드의 필드 위치가 입력 위치(pos)와 비교되어야 하는 경우 사용해야 합니다. pos 매개변수를 참조하십시오.

필수 항목

boolean

optional - default value = "false"

Trim

boolean

optional - default value = "false"

defaultValue

string

Camel 2.10: 선택 사항 - 기본값 = "" - 각 CSV 필드가 비어 있거나 사용할 수 없는 경우 필드의 기본값을 정의합니다.

impliedDecimalSeparator

boolean

Camel 2.11: 선택 사항 - 기본값 = "false" - 지정된 위치에 임의의 소수점이 있는지 나타냅니다.

lengthPos

int

Camel 2.11: 선택 사항 - 이 필드의 고정 길이를 정의하는 고정 길이 레코드에서 데이터 필드를 식별하는 데 사용할 수 있습니다.

align

string

선택 사항 - default value = "R" - 텍스트를 고정 길이 필드 내에서 오른쪽 또는 왼쪽으로 정렬합니다. 값 'R' 또는 'L' 사용

구분 기호

string

Camel 2.11: 선택 사항 - 고정 길이 레코드 내에서 변수 길이 필드의 끝을 구분 해제하는 데 사용할 수 있습니다.

케이스 1 : pos

이 매개변수/attribute는 csv 레코드의 필드 위치를 나타냅니다.

위치

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

}
Copy to Clipboard Toggle word wrap

이 예에서 볼 수 있듯이 위치는 '1'에서 시작하지만 클래스 Order에서 '5'로 계속합니다. '2'에서 '4'로의 숫자는 클래스 Client에 정의되어 있습니다(다음 참조).

위치가 다른 모델 클래스에서 계속됩니다.

public class Client {

    @DataField(pos = 2)
    private String clientNr;

    @DataField(pos = 3)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

케이스 2 : 패턴

패턴을 통해 데이터 형식을 보강하거나 검증할 수 있습니다.

패턴

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    // pattern used during parsing or when the date is created
    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

케이스 3: precision

Precision은 숫자의 10진수 부분을 정의하려는 경우에 유용합니다.

precision

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @Link
    private Client client;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

케이스 4 : 출력에 따라 다릅니다.

position 속성은 생성된 CSV 레코드에 필드를 배치하는 방법을 바인딩하는 방법을 알려줍니다. 기본적으로 사용되는 위치는 속성 'pos'로 정의된 위치에 해당합니다. If the position is different (즉, we have an asymetric processus comparing from unmarshaling) we can use 'position' to indicate this.

예를 들면 다음과 같습니다.

출력은 위치가 다릅니다.

@CsvRecord(separator = ",", isOrdered = true)
public class Order {

    // Positions of the fields start from 1 and not from 0

    @DataField(pos = 1, position = 11)
    private int orderNr;

    @DataField(pos = 2, position = 10)
    private String clientNr;

    @DataField(pos = 3, position = 9)
    private String firstName;

    @DataField(pos = 4, position = 8)
    private String lastName;

    @DataField(pos = 5, position = 7)
    private String instrumentCode;

    @DataField(pos = 6, position = 6)
    private String instrumentNumber;
}
Copy to Clipboard Toggle word wrap

주석 @DataField의 이 속성은 속성과 함께 사용해야 합니다. @CsvRecord 주석의Ordered = true

케이스 5: 필수

필드가 필수인 경우 'required' 값을 true로 설정된 속성을 사용하기만 하면 됩니다.

필수 항목

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2, required = true)
    private String clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, required = true)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

이 필드가 레코드에 없으면 다음과 같은 정보를 사용하여 구문 분석기에 의해 오류가 발생하는 것입니다.

일부 필드가 누락되어 있습니다 (선택 사항 또는 필수), line :

사례 6: 트리

필드에 처리되기 전에 제거해야 하는 선행 및/또는 후행 공백이 있는 경우 true로 설정된 'trim' 특성을 사용합니다.

Trim

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1, trim = true)
    private int orderNr;

    @DataField(pos = 2, trim = true)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

case 7 : defaultValue

필드가 정의되지 않은 경우 defaultValue 특성에 표시된 값을 사용합니다.

기본값

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, defaultValue = "Barin")
    private String lastName;
}
Copy to Clipboard Toggle word wrap

이 속성은 선택적 필드에만 적용할 수 있습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat