@Target(value={FIELD,ANNOTATION_TYPE}) @Retention(value=RUNTIME) @Documented @Repeatable(value=CsvWordForbid.List.class) @CsvConstraint(value={}) public @interface CsvWordForbid
文字列型に指定可能です。
属性value()
で語彙を指定します。
@CsvBean
public class SampleCsv {
@CsvColumn(number=1)
@CsvWordForbid({"馬鹿", "あほ"})
private String comment;
// getter/setterは省略
}
語彙をDBやファイルなどの別リソースから取得する場合は、属性provider()
にて、
プロバイダForbiddenWordProvider
の実装クラスを指定します。
Spring Frameworkと連携している場合は、プロバイダクラスをSpringBeanとして登録しておくことでインジェクションできます。
@CsvBean
public class SampleCsv {
@CsvColumn(number=1)
@CsvWordForbid(provider=FileForbiddenWordProvider.class)
private String comment;
// setter/getterは省略
}
// プロバイダクラスの実装(ファイルから語彙を取得する)
public class FileForbiddenWordProvider implements ForbiddenWordProvider {
@Override
public Collection<String> getForbiddenWords(final FieldAccessor field) {
try {
return Files.readAllLines(
new File("forbidden_word.txt").toPath(), Charset.forName("UTF-8"));
} catch (IOException e) {
throw new RuntimeException("fail reading the forbidden words file.", e);
}
}
}
public abstract String[] value
DBやファイルなどから語彙を取得する場合は、provider()
を指定します。
public abstract Class<? extends ForbiddenWordProvider>[] provider
ForbiddenWordProvider
の実装クラスを指定します。public abstract String message
{key}の書式の場合、プロパティファイルから取得した値を指定できます。
使用可能なメッセージ中の変数は下記の通りです。
Collection
です。CellProcessor
に基づいたメッセージが出力されます。public abstract BuildCase[] cases
public abstract Class<?>[] groups
処理ごとに適用するアノテーションを切り替えたい場合に指定します。
DefaultGroup
が適用され全ての処理に適用されます。Copyright © 2022 mygreen. All rights reserved.