1

我有以下属性

path.order=/order
path.address=/address

通常我们会使用 ${path.order} 来获取键值。我想动态传递类型(订单或地址)以获取键值。像下面

${path.#[flowVars.type]}

我厌倦了上面的表达。那没起效。你能帮我准备和动态获取密钥吗

4

4 回答 4

0

您的要求可以使用 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"/>

我在这里也写了一篇关于这个的帖子。

于 2017-08-08T11:45:45.273 回答
0

通过插入以下代码访问 .property 文件。

<context:property-placeholder location="smtp.properties"/>

并像这样使用它。

<logger message="${propertyFromFile}" doc:name="System Property Set in Property File"/>

https://www.youtube.com/watch?v=D95iw_ny8J4

于 2017-08-29T08:55:20.650 回答
0
<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"/>
于 2018-03-20T05:58:41.593 回答
0

我的变量中定义了一个字典

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"/>
于 2017-08-09T02:12:33.660 回答