以下のようなアイテムライターがあります。
<beans:property name="lineAggregator">
<beans:bean class="org.springframework.batch.item.file.transform.FormatterLineAggregator">
<beans:property name="fieldExtractor">
<beans:bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
<beans:property name="names" value="column1, column2, column3, column4 " />
</beans:bean>
</beans:property>
<beans:property name="format" value="%-8s%-12s%-11s%-16s" />
</beans:bean>
</beans:property>
明らかなように、列の長さがそれぞれ8、12、11、および16の固定形式ファイルに4つの列を書き込んでいます。
ただし、列 1 の文字列が 8 文字ではなく 14 文字であるとすると、出力ファイルは、行全体を先に進めることによって、盲目的に 14 文字すべてに対応します。
THIS IS A TEST
Expecting:
THIS IS COL2STARTS
Getting:
THIS IS A TESTCOL2STARTS
これを回避するには?
残りの文字は切り捨てられ、最初の 8 文字だけが書き込まれるべきではありませんか?
column で期待される 8 文字のみを厳密に渡すために、コードに検証を入れる必要がありますか?