首页 > 解决方案 > 无法从 Apache 骆驼路由 XML 配置到 Java 方法中获取单引号

问题描述

我正在使用 XML 配置定义一个 Apache 骆驼路由,并且我想在使用单引号传递参数时调用一个方法:

<bean ref="cmdExecutor" method="execute('BatchQA.bat',
        './input/CamelCMDFile/QATestScripts/', 'Analytics,&apos;qa.user&apos;')"/>

执行方法如下所示:

public int execute(String bat, String dir, String arguments, Exchange exchange) {
    String[] args = arguments.split(",");
    result = ProcessUtils.cmdExecute(bat, dir, args);
    .....

我曾尝试使用&apos;, &#39; and &#x27;来获得所需的结果,但都没有奏效。这些字符只是在arguments对象中被忽略,其余的字符串就像在我的 java 函数中一样被接收。

应用@Screwtape 解决方案后,我得到的论点&apos;qa.user&apos;不是我的目标。

谢谢。:)

标签: javaxmlapache-camel

解决方案


我不确定 Camel 对这些单引号字符串做了什么,因为如果你用撇号引用它似乎只是去掉撇号,这样我预计会导致错误的选项似乎有效。

但是,我已经让它按照您的要求工作。您需要反转报价类型。XML 允许在属性中使用单引号和双引号,即使 eclipse 似乎没有为单引号属性着色(但这个站点可以)。

因此,当我使用

<camel:bean ref="testBean" method='test("BatchQA.bat",
    "./input/CamelCMDFile/QATestScripts/", "Analytics,&apos;qa.user&apos;")' />

我的测试 bean 确实按照您的意愿分解了字符串:

[WARN ]: beans.testBean - Analytics
[WARN ]: beans.testBean - 'qa.user'

虽然我不知道是否有可能有这样一个带有单引号和双引号的字符串。希望你不需要那个。


推荐阅读