1

setHeader我的路线中有一个标签:

<setHeader headerName="timestampPart3"><simple>${header.timestampPart2.split("\\.")[0]}</simple></setHeader>
<log message="After: ${body} ${headers}"/>

我希望,它将拆分 timestampPart2 标头内的字符串并获取第一个元素。

事实上,它只是忽略了分裂:

timestampPart2=114128.0, timestampPart3=114128.0

那么我应该如何在 Spring DSL 中实现正则表达式转义呢?如果由于某种原因不可能,如何解决?

4

1 回答 1

2

要设置Exchange消息头,您需要使用name字段而不是headerName字段:

<setHeader name="timestampPart3">
    <simple>some-simple-expression</simple>
</setHeader>

此外,您需要regex为字符串方法提供原始表达式,#splitOGNL - Camel 解析层将为您自动在后台进行清理(如果需要):

<setHeader name="timestampPart3">
    <simple>${header.timestampPart2.split("\.")[0]}</simple>
</setHeader>

请注意转义.特殊字符的单个后松弛字符。简而言之,您应该提供一个不转义控制序列的正则表达式,就像通过StringJava 中的编译文字输入相同的正则表达式时所做的那样(毕竟它是原始 XML(输入流))

于 2022-01-31T13:47:57.593 回答