我正在使用XML配置定义Apache骆驼路线,我想在传递带有单引号的参数时调用方法:
<bean ref="cmdExecutor" method="execute('BatchQA.bat',
'./input/CamelCMDFile/QATestScripts/', 'Analytics,'qa.user'')"/>
execute方法如下:
public int execute(String bat, String dir, String arguments, Exchange exchange) {
String[] args = arguments.split(",");
result = ProcessUtils.cmdExecute(bat, dir, args);
.....
我尝试使用', ' and '
来获得所需的结果,但是都没有起作用。这些字符只是在arguments
对象中被忽略,其余的字符串将像在我的Java函数中一样被接收。
应用@Screwtape解决方案后,我得到的论据是'qa.user'
,而这并不是我的目标。
谢谢。 :)
答案 0 :(得分:1)
我不确定骆驼对这些单引号字符串的处理方式,因为如果用引号引起来,似乎只是去除了撇号,以至于我期望会导致错误的选项似乎起作用了。
但是,我已经按照您的要求运行了它。您需要反转报价类型。 XML允许在属性中使用单引号和双引号,即使eclipse似乎没有将单引号的属性涂成彩色(但是此站点也可以)。
因此,当我使用
<camel:bean ref="testBean" method='test("BatchQA.bat",
"./input/CamelCMDFile/QATestScripts/", "Analytics,'qa.user'")' />
我的测试bean确实会按您希望的那样分解字符串:
[WARN ]: beans.testBean - Analytics
[WARN ]: beans.testBean - 'qa.user'
尽管我不知道是否有可能使用单引号和双引号使像这样的字符串。希望您不需要。