Camel-Bindy(2.21.2)固定长度的编组似乎忽略了trim = true注释

时间:2019-02-13 11:58:29

标签: apache-camel bindy

我有一个正在使用Bindy 2.17的类,但是已经迁移到Camel 2.21.2,所以在我解组时不再修剪输入的数据。

我尝试将paddingChar属性添加到记录注释中,但这没有任何效果,并且由于我要裁剪的是空格,因此应为默认的paddingChar值无论如何。

我的班级是

@FixedLengthRecord( header = MyClass.MyHeader.class, footer = MyClass.MyFooter.class, skipHeader = true, skipFooter = true, ignoreTrailingChars = true, crlf="WINDOWS", paddingChar = ' ' )
public class MyClass{

    @DataField( pos = 1, length = 2, trim = true )
    private String field1;

    @DataField( pos = 2, length = 15, trim = true )
    private String field2;

    @DataField( pos = 3, length = 15, trim = true )
    private String field3;

    @FixedLengthRecord( ignoreTrailingChars = true )
    public static class MyHeader {

    }

    @FixedLengthRecord( ignoreTrailingChars = true)
    public static class MyFooter {

    }

}

修剪的配置方式是否有所更改,或者我还缺少其他内容?

谢谢!

1 个答案:

答案 0 :(得分:1)

我只是遇到了同样的问题。默认情况下,固定长度记录会向右对齐。从版本2.18开始,在这种情况下,仅修剪记录左侧的填充字符。如果填充字符始终在右侧,则可以将记录左对齐align =“ L”。如果您只想修剪所有与对齐方式无关的内容,则可以从版本2.20开始使用align =“ B”。这是相关的更改:https://github.com/apache/camel/commit/26aa4e8f14cac9dcdaa8f369a8045b8e8df56f1e#diff-24aaa851bf960dc4d2e04c5fbbf8aada