2017-06-22 157 views
1

我已經定義處理我的應用程序的資源束的彈簧豆如下:騾dataweave調用彈簧豆

<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> 

在我的應用程序我可以與訪問它在一個變量或記錄器對象例如以下MEL命令:

#[app.registry.renewMobileEngagementApiMessages.getMessage('error.clic_unavailable.description', null, sessionVars.REQUESTED_LOCALE)] 

它正確返回我的屬性,沒有問題,直到這裏。

的問題是,現在我需要訪問我的屬性在DW:變換消息,我無法弄清楚如何做到這一點。我試圖用一個全球性的功能,但我沒有得到如何訪問我的「renewMobileEngagementApiMessages」對象引用,然後調用「的getMessage」的方法。

任何幫助將是偉大的。提前致謝!

+0

你爲什麼不能定義這個貫通性佔位https://docs.mulesoft.com/mule-user-guide/v/3.8/configuring-properties#properties-files,然後使用$ {訪問屬性之一.. } dataweave之外或作爲'p('propName')'在dataweave中? –

+0

因爲我需要國際化。我有一個每種語言的屬性文件,我使用spring資源包訪問它們。 –

回答

0

只是把一個flowVar消息或有效載荷與MEL的dataweave組件之前和訪問有效載荷/ flowVar在dataweave。

這裏是我加載載荷我的Spring bean一個例子之前,我訪問我的dataweave:

<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> 
+0

謝謝但是這正是我想避免的解決方案。我需要做這在多個地方的時候很多的,這是不實際的把我翻譯成每次瓦爾。 –

0

您可以在流量變量屬性存儲dataweave組件之前和dataweave稱之爲flowVars使用flowVars.variableName

0

可以很容易地與操作者訪問任何系統或彈簧特性的 'p()'

實施例:

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

DataWeave正在處理您的轉換時,您可以引用服務器中存在的任何屬性(系統或Spring),以使用p('prop_name')函數。