如果有任何帮助,我们将不胜感激:)
我的 Camel 路线 XML 文件中有此代码:
<choice>
<when>
<simple>${header.CamelHttpQuery} not contains '%'</simple>
<process ref="firstResponseTransformer"/>
</when>
<otherwise>
<process ref="secondResponseTransformer"/>
</otherwise>
</choice>
(我也尝试过!contains
)
正如您所看到的,我想根据情况去不同的类(class)准备我的回答。
通过在路由中先前命中的处理器中使用断点,我可以看到 > headers > CamelHttpQuery 中的 Exchange > 的值是 ""
但无论条件是否为 true, else 标签中的变压器始终是要被命中的变压器。
根据 Camel 文档,这个简单的语句对我来说看起来是正确的,并且我在代码库中还有其他简单的语句,它们似乎工作正常。
有人知道为什么简单的方法在应该是正确的时候却不起作用吗?
完全卡住了。提前致谢。
Camel 版本2.12.4
编辑:我认为这是因为我需要将 header.CamelHttpQuery
从字符转换为字符串,有谁知道如何在简单中执行此操作?
最佳答案
问题是我的 header.CamelHttpQuery 是字符而不是字符串。
根据 Bedla 在上面评论中的建议,我修复了:
<simple>${headerAs(CamelHttpQuery,String)} not contains '%'</simple>
关于java - Apache Camel XML 路由中的简单谓词不起作用 - 需要将 header 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59789323/