如何在使用 mule 中的属性文件中的键调用键值时调用 MEL 表达式
How to call MEL expression while invoking the key value with key from properties file in mule
我有如下属性
path.order=/order
path.address=/address
通常我们会使用${path.order}来获取键值。我想动态传递类型(订单或地址)以获取键值。喜欢下面
${path.#[flowVars.type]}
我厌倦了上面的表情。它不起作用。你能帮忙准备并动态获取密钥吗
您的要求可以使用dataweave函数来实现。我正在 post 截取一个片段。
我尝试使用最终的 dw 表达式连接,但没有成功。让我知道这是否满足您的要求。
<message-properties-transformer scope="invocation" doc:name="Message Properties">
<add-message-property key="type1" value="address"/>
<add-message-property key="type2" value="object"/>
</message-properties-transformer>
<message-properties-transformer scope="invocation" doc:name="Message Properties">
<add-message-property key="property1" value="#['path.' + flowVars.type1]"/>
<add-message-property key="property2" value="#['path.' + flowVars.type2]"/>
</message-properties-transformer>
<logger message="#[dw('p(flowVars.property1)')]" level="INFO" doc:name="Logger"/>
我也在这个here上写了一个post。
我在我的变量中定义了一个字典
var.dictionary=#[['key':'value', 'key': 'value']]
然后在我的 Dataweave 中引用它并传递一个密钥给它
node: flowVars.var.dictionary[payload01.key]
所以(不幸的是未经测试)你的例子应该有一个变量:
var.dictionary=#[['order':'/order', 'address': '/address']]
并将其引用为
flowVars.var.dictionary[#[flowVars.type]]
所以它应该看起来像:
<logger message="#[path.#flowVars.var.dictionary[#[flowVars.type]]]" level="INFO" doc:name="Logger"/>
通过插入以下代码访问 .属性 文件。
<context:property-placeholder location="smtp.properties"/>
然后像这样使用它。
<logger message="${propertyFromFile}" doc:name="System Property Set in Property File"/>
<set-variable variableName="type" value="order" doc:name="Variable"/>
<expression-component doc:name="Expression"><![CDATA[flowVars.propertyName='path.'+flowVars.type;
flowVars.propertyValue =dw("p(flowVars.propertyName)");]]></expression-component>
<logger message="#[flowVars.propertyValue]" level="INFO" doc:name="Logger"/>
我有如下属性
path.order=/order
path.address=/address
通常我们会使用${path.order}来获取键值。我想动态传递类型(订单或地址)以获取键值。喜欢下面
${path.#[flowVars.type]}
我厌倦了上面的表情。它不起作用。你能帮忙准备并动态获取密钥吗
您的要求可以使用dataweave函数来实现。我正在 post 截取一个片段。 我尝试使用最终的 dw 表达式连接,但没有成功。让我知道这是否满足您的要求。
<message-properties-transformer scope="invocation" doc:name="Message Properties">
<add-message-property key="type1" value="address"/>
<add-message-property key="type2" value="object"/>
</message-properties-transformer>
<message-properties-transformer scope="invocation" doc:name="Message Properties">
<add-message-property key="property1" value="#['path.' + flowVars.type1]"/>
<add-message-property key="property2" value="#['path.' + flowVars.type2]"/>
</message-properties-transformer>
<logger message="#[dw('p(flowVars.property1)')]" level="INFO" doc:name="Logger"/>
我也在这个here上写了一个post。
我在我的变量中定义了一个字典
var.dictionary=#[['key':'value', 'key': 'value']]
然后在我的 Dataweave 中引用它并传递一个密钥给它
node: flowVars.var.dictionary[payload01.key]
所以(不幸的是未经测试)你的例子应该有一个变量:
var.dictionary=#[['order':'/order', 'address': '/address']]
并将其引用为
flowVars.var.dictionary[#[flowVars.type]]
所以它应该看起来像:
<logger message="#[path.#flowVars.var.dictionary[#[flowVars.type]]]" level="INFO" doc:name="Logger"/>
通过插入以下代码访问 .属性 文件。
<context:property-placeholder location="smtp.properties"/>
然后像这样使用它。
<logger message="${propertyFromFile}" doc:name="System Property Set in Property File"/>
<set-variable variableName="type" value="order" doc:name="Variable"/>
<expression-component doc:name="Expression"><![CDATA[flowVars.propertyName='path.'+flowVars.type;
flowVars.propertyValue =dw("p(flowVars.propertyName)");]]></expression-component>
<logger message="#[flowVars.propertyValue]" level="INFO" doc:name="Logger"/>