2

我正在使用 Spring 批处理框架来解析一个固定长度的平面文件,使用FlatFileItemReaderlineMapperDefaultLineMapperfieldSetMapper作为PassThroughFieldSetMapper和lineTokenizer作为 PatternMatchingCompositeLineTokenizer。

但是我在处理方面遇到了一些问题,因为文件中的值可能有空格。FieldSet在删除任何前导或尾随空格后给我值。出于某种验证目的,我想要带有空格的值(如果有)。

我是 Spring Batch 框架的新手。有人可以让我知道如何解决这个问题吗?

4

2 回答 2

2

我知道很久以前有人问过,但如果有人会遇到同样的问题:

问题在于 FieldSet 类,因为当您调用fieldSet.readString()它时,它将调用readAndTrim()方法并返回修剪后的字符串。要保留保留空格的字符串,您应该调用fieldSet.readRawString()

于 2018-04-10T11:28:41.973 回答
0

我也只想回答这个问题:

您可以创建自己的实现FieldMapper并将其自动连接到您的lineMapper.setFieldSetMapper()

@Component
class CustomFieldSetMapper implements FieldSetMapper<Partnership>{

    @Override
    public Partnership mapFieldSet(FieldSet fieldSet) throws BindException {

        return new Partnership(
                partnerCrmId:fieldSet.readString('partnerCrmId'),
                partnerType: fieldSet.readString('partnerType'),
                customerCrmId: fieldSet.readString('customerCrmId'),
                startDate: fieldSet.readString('startDate'),
                endDate: fieldSet.readString('endDate'),
                clientId: fieldSet.readRawString('clientId'),
                status: fieldSet.readString('status'),
                type: fieldSet.readString('type'),
                providerCode: fieldSet.readString('providerCode'),
                lastModifiedDate: fieldSet.readString('lastModifiedDate')
        )

    }
}
于 2018-08-01T11:34:03.240 回答