-------------------------------------------------------- エラーメッセージの設定方法 -------------------------------------------------------- SpringFrameworkの ``MessageSource`` を利用する方法を説明します。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ XMLによるコンテナの設定 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ XMLによる設定方法を説明します。 コンテナの定義の基本は次のようになります。 * ``MessageSource`` として、本ライブラリのエラーメッセージ ``com.github.mygreen.supercsv.localization.SuperCsvMessages`` を読み込んでおきます。 * 独自のエラーメッセージがあれば、追加で定義します。 * ``com.github.mygreen.supercsv.localization.SpringMessageResolver`` に、``MessageSource`` を渡します。 .. sourcecode:: xml :linenos: com.github.mygreen.supercsv.localization.SuperCsvMessages MyMessages ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ JavaConfigによるコンテナの設定 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Spring Framework3.0から追加された、JavaソースによるSpringBean定義の方法を説明します。 JavaConfigによる設定を使用する場合は、Spring Frameworkのバージョンをできるだけ最新のものを使用してください。 特に、機能が豊富なバージョン4.0以上の使用を推奨します。 .. sourcecode:: java :linenos: import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Description; import org.springframework.context.support.ResourceBundleMessageSource; import com.github.mygreen.supercsv.localization.SpringMessageResolver; // Javaによるコンテナの定義 @Configuration @ComponentScan(basePackages="sample.spring") public class SuperCsvConfig { @Bean @Description("Spring標準のメッセージソースの定義") public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.addBasenames( "com.github.mygreen.supercsv.localization.SuperCsvMessages", "MyMessages"); return messageSource; } @Bean @Description("本ライブラリのSpring用のMessgeResolverの定義") public SpringMessageResolver springMessageResolver() { return new SpringMessageResolver(messageSource()); } } ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SpringMessageResolverの使用方法 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``CsvExceptionConverter#setMessageResolver(...)`` に、SpringBeanとして定義した ``SpringMessageResolver`` を設定します。 さらに、 ``CsvAnnotationBeanReader#setExceptionConverter(...)`` に、作成した *CsvExceptionConverter* を渡します。 .. sourcecode:: java :linenos: import com.github.mygreen.supercsv.io.CsvAnnotationBeanReader; import com.github.mygreen.supercsv.localization.SpringMessageResolver; import com.github.mygreen.supercsv.validation.CsvExceptionConverter; import java.nio.charset.Charset; import java.nio.file.Files; import java.io.File; import org.supercsv.prefs.CsvPreference; @Service public class CsvService { @Autowired private SpringMessageResolver messageResolver; public void sampleSpring() { CsvAnnotationBeanReader csvReader = new CsvAnnotationBeanReader<>( UserCsv.class, Files.newBufferedReader(new File("user.csv").toPath(), Charset.forName("Windows-31j")), CsvPreference.STANDARD_PREFERENCE); // CsvExceptionConverterの作成 - SpringMessageResolverを設定する CsvExceptionConverter exceptionConverter = new CsvExceptionConverter(); exceptionConverter.setMessageResolver(messageResolver); // CsvExceptionConverterを設定する svReader.setExceptionConverter(exceptionConverter); //... 以下省略 } }