Apache camel Camel简单表达式语言-如何动态获取属性值

Apache camel Camel简单表达式语言-如何动态获取属性值,apache-camel,Apache Camel,我不熟悉Camel,在JavaDSL中使用简单表达式从属性文件中获取值 .setProperty(“PortalUrl”,简单(“properties:Portal.url”) 属性文件值- Portal.url=abc.com/example 但是现在我需要从属性文件中获取特定于客户的URL。 示例值- Portal.url.customer1=abc.com/example/abcd Portal.url.customer2=abc.com/example/xyz 客户名称出现在请求本身中,

我不熟悉Camel,在JavaDSL中使用简单表达式从属性文件中获取值

.setProperty(“PortalUrl”,简单(“properties:Portal.url”)

属性文件值-
Portal.url=abc.com/example

但是现在我需要从属性文件中获取特定于客户的URL。 示例值-

Portal.url.customer1=abc.com/example/abcd
Portal.url.customer2=abc.com/example/xyz

客户名称出现在请求本身中,因此我想像
.setProperty(“PortalUrl”,简单(“properties:Portal.url.”+“${body.customerName}”)

但是上面的代码不起作用,它将PortalUrl属性的值作为
properties:Portal.ulr.customer1

当我尝试使用直接硬编码值时,它会从属性文件中为我提供正确的URL-
.setProperty(“PortalUrl”,简单(“属性:Portal.url.+“customer1”))

它返回了正确的值-
abc.com/example/abcd

<>但是我想把URL动态地和传入请求中的客户名字一样。
有没有人能帮我解释一下simple是如何工作的。

你有没有用simple语言尝试过
${body}
函数:

 .setProperty("PortalUrl", 
     simple("${properties:Portal.url.${body.customerName}}"))

哦,我不知道你可以这么做,直到克劳斯,我也试过了,但它也不起作用,
${body.customerName}
被视为正常字符串值,代码给出了错误,因为在属性文件中找不到Portal.url.${body.customerName}的值。它对我有效,您使用的是哪个版本的Camel?我使用的是-2.17.0它对我也很有用。。。早些时候,我错过了开头的“$”符号。感谢克劳斯·易卜生和米洛舍米利沃耶维奇:)