这里的任何帮助将不胜感激:)

我的骆驼路线XML文件中包含以下代码:

<choice>
    <when>
        <simple>${header.CamelHttpQuery} not contains '%'</simple>
        <process ref="firstResponseTransformer"/>
    </when>
    <otherwise>
        <process ref="secondResponseTransformer"/>
    </otherwise>
</choice>


(我也尝试过!contains

如您所见,我想根据条件去不同的班级准备我的回答。

通过在路由中先前命中的处理器中使用断点,我可以看到exchange> in> headers> CamelHttpQuery的值是"",但是无论条件是否为真,否则标记中的转换器始终是一个被击中。

根据Camel文档,该简单语句对我来说似乎是正确的,并且我在代码库中还有其他一些简单语句,它们似乎运行良好。

任何人都知道为什么简单的样式在应为真时不起作用?

完全卡住了。提前致谢。

骆驼版本2.12.4

编辑:我认为这是因为我需要将header.CamelHttpQuery从字符转换为字符串,有人知道如何在Simple中做到这一点吗?

最佳答案

问题是我的header.CamelHttpQuery是不是字符串的字符。

正如Bedla在上述评论中所建议的,我修复了:
<simple>${headerAs(CamelHttpQuery,String)} not contains '%'</simple>

10-08 09:32