当前位置: 首页 > 知识库问答 >
问题:

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

戈建白
2023-03-14

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

<代码>。setProperty(“PortalUrl”,简单(“properties:Portal.url”))

属性文件值-门户。url=abc。com/示例

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

<代码>门户。url。客户1=abc。com/example/xiang门户。url。客户2=abc。com/示例/xyz

客户名称出现在请求本身中,因此我想像代码一样进行操作。setProperty(“PortalUrl”,简单(“属性:Portal.url”)“${body.customerName}”))

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

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

它返回了正确的值-<代码>abc。com/example/abcd

但我想动态获取URL,作为传入请求中的客户名称。有谁能帮我一下,解释一下简单的工作原理吗。

共有1个答案

司空鸣
2023-03-14

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

 .setProperty("PortalUrl", 
     simple("${properties:Portal.url.${body.customerName}}"))
 类似资料:
  • 在Camel(JBoss Fuse,特别是Spring DSL)中,我试图用Camel简单表达式读取布尔值。 ${body}是一个有效的非空POJO,'fielda'是另一个嵌套POJO,fieldb是一个布尔值。Fielda可以为空,但body不能为空。 当fielda为非null时,我能够读取值而不会出错。 从各种文档来源(Apache Camel Simple、JBoss Fuse)可以看出

  • 我使用simple in camel编写脚本语言。我只需要将主体设置为空。 我试试这个: 它将正文设置为文字字符串“null”。 如果我这样做: 它可以工作,但似乎有点笨重。有没有一种简单的方式来表示null?

  • 我在骆驼路线中使用了这个表达: 然而,它对这个符号感到震惊。 如何构造这个表达式,假定它从消息体上POJO的getter获取一个值,并将其压缩到Exchange上的一个属性(加1)。

  • 问题内容: Spring 3引入了一种新的表达语言(SpEL),可以在bean定义中使用。语法本身已经很好地指定了。 目前还不清楚SpEL如何与以前版本中已经存在的属性占位符语法进行交互。SpEL是否支持属性占位符,还是我必须结合两种机制的语法并希望它们结合起来? 让我举一个具体的例子。我想使用属性语法,但要加上elvis运算符提供的“默认值”语法,以处理未定义的情况。 我尝试了以下语法,但没有成

  • 问题内容: 我正在使用NewtonSoft JObject解析JSON字符串。如何以编程方式从动态对象获取值?我想简化代码,以免对每个对象重复说明。 有什么办法可以将“ if”语句中的代码块提取到单独的方法中,例如: 甚至有可能因为我们不能对动态对象使用反射。还是我甚至正确使用了JObject? 谢谢。 问题答案: 假设您正在使用Newtonsoft.Json.Linq.JObject,则不需要使

  • JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。 一个简单的语法 典型的,当您需要在JSP标签中指定一个属性值时,只需要简单地使用字符串即可: <jsp:setProperty name="box" propert