无法将参数传递到序列模板 - WSO2 ESB 4.8.1

时间:2015-07-01 02:14:47

标签: wso2 wso2esb

我们正在尝试使用WSO2 ESB 4.8.1中的序列模板创建通用参数化序列以供重用。但是,序列模板永远不会接收从调用模板介体传递的参数。这与我们用于模板的配置相同,

<template xmlns="http://ws.apache.org/ns/synapse" name="test_template">
   <sequence>
      <log level="custom">
         <property xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" name="MESSAGE" expression="$func:message"></property>
      </log>
   </sequence>
</template>

...以及我们从......中调用它的顺序。

<sequence xmlns="http://ws.apache.org/ns/synapse" name="template_test">
   <log>
      <property name="POSITION" value="CALLING_TEMPLATE"></property>
   </log>
   <call-template target="test_template">
      <with-param name="message" value="Hello World!"></with-param>
   </call-template>
</sequence>

日志文件中报告的值始终为null。谁能指出原因呢?

1 个答案:

答案 0 :(得分:1)

您必须声明将参数作为<parameter>传递给模板。

<template xmlns="http://ws.apache.org/ns/synapse" name="test_template">
   <parameter name="message" />
   <sequence>
      <log level="custom">
         <property xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" name="MESSAGE" expression="$func:message"></property>
      </log>
   </sequence>
</template>

想象一下这等同于方法签名,其中输入参数在括号内定义。