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

时间:2016-09-15 09:59:46

标签: apache-camel

我是Camel的新手,并使用简单的表达式从Java DSL中的属性文件中获取值。

.setProperty("PortalUrl", simple("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", simple("properties:Portal.url."+"${body.customerName}"))

但上面的代码无法正常工作,它将PortalUrl属性的值设为properties:Portal.ulr.customer1

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

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

但我希望动态获取URL作为传入请求中的客户名称。 谁能帮助我解决这个问题,并解释一下如何简单起作用。

1 个答案:

答案 0 :(得分:2)

您是否尝试使用简单语言的${body}函数:

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