@Documented @Retention(value=RUNTIME) @Target(value=FIELD) public @interface CsvBindByName
| Modifier and Type | Optional Element and Description |
|---|---|
String |
capture
If this is anything but an empty string, it will be used as a regular
expression to extract part of the input before conversion to the bean
field.
|
String |
column
If not specified, the name of the column must be identical to the name
of the field.
|
String |
format
If this is anything but an empty string, it will be used as a format
string for
String.format(String, Object...) on
writing. |
String |
locale
Defines the locale to be used for decoding the argument.
|
boolean |
required
Whether or not the annotated field is required to be present in every
data set of the input.
|
String |
writeLocale
The locale for writing.
|
boolean |
writeLocaleEqualsReadLocale
Whether or not the same locale is used for writing as for reading.
|
public abstract boolean required
public abstract String column
public abstract String locale
If not specified, the current default locale is used. The locale must be
one recognized by Locale. Locale conversion is supported
for the following data types:
ByteFloatDoubleIntegerLongShortBigDecimalBigIntegerCsvDateThe locale must be in a format accepted by
Locale.forLanguageTag(java.lang.String)
Caution must be exercised with the default locale, for the default locale for numerical types does not mean the locale of the running program, such as en-US or de-DE, but rather no locale. Numbers will be parsed more or less the way the Java compiler would parse them. That means, for instance, that thousands separators in long numbers are not permitted, even if the locale of the running program would accept them. When dealing with locale-sensitive data, it is always best to specify the locale explicitly.
public abstract boolean writeLocaleEqualsReadLocale
locale() is used for both reading and writing
and writeLocale() is ignored.public abstract String writeLocale
writeLocaleEqualsReadLocale() is
false. The format is identical to locale().locale(),
writeLocaleEqualsReadLocale()public abstract String capture
An empty string behaves as if the regular expression ^(.*)$
had been specified.
The regular expression will be compiled and every field of input will be passed through it, naturally after the input has been normalized (quotations and escape characters removed). The first capture group will be extracted, and that string will be passed on to the appropriate conversion routine for the bean field in question.
This makes it possible to easily convert input fields with forms like
Grade: 94.2 into 94.2, which can then be converted to a
floating point bean field, all without writing a custom converter.
The regular expression is applied to the entire string in question
(i.e. with Matcher.matches()), instead of just the beginning of
the string (Matcher.lookingAt()) or anywhere in the string
(Matcher.find()). If it fails to match, the input string is
passed unchanged to the appropriate conversion routine for the bean
field. The reason for this is two-fold:
CsvDataTypeMismatchException if the
input is not being converted into a simple string.This is the inverse operation of format().
public abstract String format
String.format(String, Object...) on
writing.
An empty string behaves as if the format string "%s" had been
specified.
The format string, if it is not empty, should contain one and only
one %s, which will be replaced by the string value of the bean
field after conversion. If, however, the bean field is empty, then the
output will be empty as well, as opposed to passing an empty string to
this format string and using that as the output.
This is the inverse operation of capture().
Copyright © 2019. All rights reserved.