调用springbean的mule-dataweave

调用springbean的mule-dataweave,mule,resourcebundle,anypoint-studio,dataweave,Mule,Resourcebundle,Anypoint Studio,Dataweave,我定义了一个Springbean来处理我的应用程序的资源包,如下所示: <spring:bean id="renewMobileEngagementApiMessages" class="org.springframework.context.support.ResourceBundleMessageSource"> <spring:property name="basename" value="messages/renew-mobile-engagement-api-

我定义了一个Springbean来处理我的应用程序的资源包,如下所示:

<spring:bean id="renewMobileEngagementApiMessages" class="org.springframework.context.support.ResourceBundleMessageSource">
    <spring:property name="basename" value="messages/renew-mobile-engagement-api-messages"></spring:property>
    <spring:property name="defaultEncoding" value="UTF-8"></spring:property>
    <spring:property name="fallbackToSystemLocale" value="false"></spring:property>
</spring:bean>
它按预期正确返回我的属性,在此之前没有问题

问题是,现在我需要在dw:transform消息中访问我的属性,但我不知道怎么做。我尝试使用全局函数,但不知道如何访问我的“RenewMobileEngagementAdminessages”对象引用,然后调用“getMessage”方法


任何帮助都会很好。提前谢谢

只需将消息放在flowVar或有效负载中,放在带有MEL的dataweave组件之前,然后访问dataweave中的有效负载/flowVar即可

下面是一个示例,在访问我的数据编织之前,我将SpringBean加载到有效负载中:

<mule>
    <spring:beans>
        <spring:bean id="foo" name="foo" class="java.lang.String">
            <spring:constructor-arg value="this is foo." />
        </spring:bean>
    </spring:beans>

    <flow name="test-flow">
        <set-payload value="#[app.registry.foo]" doc:name="Set Payload"/>
        <dw:transform-message doc:name="Transform Message">
            <dw:set-payload>
<![CDATA[%dw 1.0
%output application/xml
---
{
    foo: payload
}]]>
</dw:set-payload>
        </dw:transform-message>
    </flow>
</mule>

只需使用MEL将消息放在flowVar或有效负载中的dataweave组件之前,然后访问dataweave中的有效负载/flowVar即可

下面是一个示例,在访问我的数据编织之前,我将SpringBean加载到有效负载中:

<mule>
    <spring:beans>
        <spring:bean id="foo" name="foo" class="java.lang.String">
            <spring:constructor-arg value="this is foo." />
        </spring:bean>
    </spring:beans>

    <flow name="test-flow">
        <set-payload value="#[app.registry.foo]" doc:name="Set Payload"/>
        <dw:transform-message doc:name="Transform Message">
            <dw:set-payload>
<![CDATA[%dw 1.0
%output application/xml
---
{
    foo: payload
}]]>
</dw:set-payload>
        </dw:transform-message>
    </flow>
</mule>


您可以将属性存储在dataweave组件之前的流变量中,并使用
flowVars在
dataweave
中调用此
flowVars
。variableName
您可以将属性存储在dataweave组件之前的流变量中,并使用
dataweave
中调用此
flowVars
flowVars.variableName

使用运算符“p()”可以轻松访问任何系统或Spring属性

例如:

%dw 1.0
%output application/json
---
{
    mulehome: p('mule.home')
}

使用运算符“p()”可以轻松访问任何系统或Spring属性

例如:

%dw 1.0
%output application/json
---
{
    mulehome: p('mule.home')
}

在DataWeave处理转换时,您可以引用服务器中存在的任何属性(系统或Spring),为此,请使用p('prop_name')函数。

在DataWeave处理转换时,您可以引用服务器中存在的任何属性(系统或Spring),以便使用p('prop_name')进行引用函数。

谢谢,但这正是我想要避免的解决方案。我需要在多个地方做很多次,每次将我的翻译放入vars是不实际的。谢谢,但这正是我想要避免的解决方案。我需要在多个地方执行此操作很多次,每次将我的翻译放入VAR是不实际的。为什么不能通过属性占位符定义此操作,然后使用dataweave外部的${..}或dataweave内部的
p('propName')
访问属性?因为我需要国际化。我有每种语言的属性文件,我使用spring资源包访问它们。为什么不能通过属性占位符定义它们,然后在dataweave外部使用${..}或在dataweave内部使用
p('propName')
访问属性?因为我需要国际化。每种语言都有一个属性文件,我使用spring资源包访问它们。