Apache Camel Bindy Unmarshall vs Marshall是不同的



我正在处理一段格式怪异的固定长度数据。基本上是10个字符,但第一个字符表示符号。我可以使用下面的配置将数据解组为整数,但在封送时,我需要获得原始格式的数据。

我认为问题是,该模式似乎只在解组时使用,因为我将其更改为完全无效的模式,并且它不会更改整理后的结果。

我还尝试了以下操作,添加了前导零,但我也需要添加回符号字符。

@field:DataField(pos = 1, length = 10, pattern = "+0", align = 'R', paddingChar='0')

数据

+000000746
@FixedLengthRecord
@Link
data class Row(
@field:DataField(pos = 1, length = 10, pattern = "+0")
val messageBodyLength: Int? = null
)
// All of the routes are direct:
// First unmarshal the data
from(UNMARSHALL_ENDPOINT_URI)
.unmarshal()
.bindy(BindyType.Fixed, Row::class.java)
.to(UNMARSHALL_RESULT_MOCK_ENDPOINT_URI)
sendBody(UNMARSHALL_ENDPOINT_URI, "+000000746")
// returns a Row with messageBodyLength set to 746 as expected.
from(MARSHALL_ENDPOINT_URI)
.marshal()
.bindy(BindyType.Fixed, Row::class.java)
.convertBodyTo(String::class.java)
.to(MARSHALL_RESULT_MOCK_ENDPOINT_URI)
sendBody(MARSHALL_ENDPOINT_URI, Row(messageBodyLength=746))
// Returns "       746"
// Expected "+000000746"

谢谢!

发现问题。数字的模式字段需要指定区域设置。

骆驼:数据格式:bindy固定:区域设置:默认

最新更新