java - Apache Camel XML 路由中的简单谓词不起作用 - 需要将 header 转换为字符串?

标签 java xml spring-boot apache-camel

如果有任何帮助,我们将不胜感激:)

我的 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/

相关文章:

xml - 在izpack中安装后执行脚本

spring-boot - 在完成之前返回 spring 批处理作业的作业 ID "immediately"

java - 如何使用 OKHTTP 发出 post 请求?

java - 在 Java 中我可以缩小数组以节省内存吗?

javascript - 如何使用 jquery 创建 XML?

C# - 读取 XML 文件

tomcat - spring-boot中tomcat访问日志的位置和名称如何配置?

java - 是否可以使用不同的端口实例化同一个 spring-boot 应用程序两次?

java - 这段代码如何生成该十六进制值?

java - while 循环会停止执行吗?