我有以下属性
path.order=/order
path.address=/address
通常我们会使用 ${path.order} 来获取键值。我想动态传递类型(订单或地址)以获取键值。像下面
${path.#[flowVars.type]}
我厌倦了上面的表达。那没起效。你能帮我准备和动态获取密钥吗
我有以下属性
path.order=/order
path.address=/address
通常我们会使用 ${path.order} 来获取键值。我想动态传递类型(订单或地址)以获取键值。像下面
${path.#[flowVars.type]}
我厌倦了上面的表达。那没起效。你能帮我准备和动态获取密钥吗
您的要求可以使用 dataweave 功能来实现。我正在发布一个片段。我尝试将最终的 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"/>
我在这里也写了一篇关于这个的帖子。
通过插入以下代码访问 .property 文件。
<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"/>
我的变量中定义了一个字典
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"/>