Java BeanIO-在封送固定宽度文件时禁用填充或跳过空字段

Java BeanIO-在封送固定宽度文件时禁用填充或跳过空字段,java,bean-io,Java,Bean Io,我正在尝试使用BeanIO库编写一个固定宽度的文件。以下是有问题的记录: @Record open class KeySegment( @Field(at = 0, length = 1, required = true) var recordType: String = "", @Field(at = 1, length = 6, required = true) var primaryCorpId: String = "", @Field(at = 7, length

我正在尝试使用BeanIO库编写一个固定宽度的文件。以下是有问题的记录:

@Record
open class KeySegment(
    @Field(at = 0, length = 1, required = true) var recordType: String = "",
    @Field(at = 1, length = 6, required = true) var primaryCorpId: String = "",
    @Field(at = 7, length = 16, minOccurs = 0) var creditCardAcc: String? = null,
    @Field(at = 7, length = 8, minOccurs = 0) var companyId: String? = null,
    @Field(at = 15, length = 8, minOccurs = 0) var sublevelId: String? = null,
    @Field(at = 23, length = 8, required = true) var fileCreateDate: String = "",
    @Field(at = 31, length = 8) var sourceId: String = "",
    @Field(at = 39, length = 816) var filler: String = ""
)
请注意,
creditCardAcc
companyId+subvelid
在文件中的位置相同。根据使用情况,我们可以设置
creditCardAcc
字段或
companyId
subvelid
。现在对于我的用例,我想设置
creditCardAcc
,但问题是
companyId
subvelid
用空格填充,并覆盖
creditCardAcc
字段,即使它们设置为
null

一种解决方案是将这些字段拉入扩展
KeySegment
的两个子类,然后封送子类。但是,我想知道是否有更好的本机解决方案可以用来实现这一点。例如,如果字段为空,是否有方法禁用填充


谢谢。

当字段为
null
时,无法禁用填充。
padding
属性具有以下描述

如果启用了填充,则必填字段属性具有一定的控制权 在空值的编组和反编组上

对由固定长度的所有空格组成的字段进行解组时 流,如果required为false,则不管 填充字符。如果required为true,则需要进行字段验证 错误被触发。在编组空字段值时,如果 required为false,字段文本格式为空格,与 配置的填充字符


这句话的最后一句正是你要问的。

对,我知道。本段描述了字段为空时发生的情况。问题是是否有一种方法可以通过BeanIO配置以任何方式绕过这一点,答案是否定的