2015-04-07 64 views
1

在駱駝的Simple documentation他們說:Apache Camel:如何正確嵌套一個函數?

從駱駝2.9起,可以嵌套函數,如下面所示:

<setHeader headerName="myHeader"> 
    <simple>${properties:${header.someKey}}</simple> 
</setHeader> 

這裏就是我想要做:

<simple>${property.${property.prefix}variableName}</simple> 

我正試圖訪問名爲:

exchange.getProperty("prefix", String.class) + "variableName" 

但我發現了此異常:

Caused by: org.apache.camel.language.simple.types.SimpleIllegalSyntaxException: ${ cannot accept or at location 22 
${property.${property.prefix}variableName} 

我在做什麼錯在這裏?

我使用駱駝版本2.13.0

回答

0

我確認下面的代碼工作正常駱駝2.13.0

from("...") 
    .setProperty("prefix", constant("pre-")) 
    .setProperty("pre-variable", constant("value")) 
    .setHeader("myHeader", simple("${property.${property.prefix}variable}")) 

您可能必須在prefix財產,防止妥善解決特殊字符。

+0

我的前綴只包含字母和下劃線。但是,當我在交易所上設置該屬性時,從(「...」)的結果設置屬性。 – rapt

+0

哼,把它設置在'from(...)的結果上就等於在交換機上設置。創建在交換機上設置屬性的處理器的工作原理類似。也許你可以分享一些關於你的駱駝路線的內容,以幫助識別有什麼不同。 –