为什么在WSO2 ESB中我可以';是否创建一个新属性,该属性是另一个属性和固定字符串的串联?我得到的结果是空的

为什么在WSO2 ESB中我可以';是否创建一个新属性,该属性是另一个属性和固定字符串的串联?我得到的结果是空的,wso2,wso2esb,Wso2,Wso2esb,我是WSO2 ESB的新手,我有以下问题。我有一个简单的POST API,它接收JSON负载。我正确地将JSON内容提取到属性中 然后,我必须创建一个新属性,其中包含先前属性之一(从JSON文档检索)的内容,并且必须将一个固定字符串连接到其内容 因此,我的API是: <?xml version="1.0" encoding="UTF-8"?> <api context="/meteo" name="meteo_data_population_insert" xmlns="htt

我是WSO2 ESB的新手,我有以下问题。我有一个简单的POST API,它接收JSON负载。我正确地将JSON内容提取到属性中

然后,我必须创建一个新属性,其中包含先前属性之一(从JSON文档检索)的内容,并且必须将一个固定字符串连接到其内容

因此,我的API是:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/meteo" name="meteo_data_population_insert" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="POST" protocol="http" uri-template="/forecast">
        <inSequence>
            <log level="full"/>
            <log description="Log" level="custom">
                <property name="message" value="meteo_data_population_insert START !!!"/>
            </log>

            <property expression="json-eval($.forecast_date)" name="forecast_date" scope="default" type="STRING"/>

            <property expression="json-eval($.morning.weather.min_temp)" name="morning_min_temp" scope="default" type="STRING"/>


            <log level="custom">
                <property expression="$ctx:forecast_date" name="forecast_date"/>
            </log>
            <log level="custom">
                <property expression="$ctx:morning_min_temp" name="morning_min_temp"/>
            </log>

            <property name="forecast_date_CONCAT" expression="fn:concat($ctx:forecast_date, '_morning')" scope="operation" type="STRING"/>
            <log level="custom">
                <property expression="$ctx:forecast_date_CONCAT" name="forecast_date_CONCAT"/>
            </log>


        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>
如您所见,我正确地检索了预测日期值,但当我尝试创建新的预测日期属性时,将该值与\u晨字符串连接起来,该属性不起作用,并且我获得了null作为该新属性的值


为什么??我的代码有什么问题?我错过了什么?如何解决此问题?

通过以下方式自行解决:

<property name="forecast_date_CONCAT" expression="fn:concat($ctx:forecast_date, '_morning')" scope="operation" type="STRING"/>
<log level="custom">
    <property expression="$ctx:forecast_date_CONCAT" name="forecast_date_CONCAT"/>
</log>
<property expression="fn:concat(get-property('forecast_date'), '_morning')" name="forecast_date_CONCAT" scope="default" type="STRING"/>
<log level="custom">
    <property expression="$ctx:forecast_date_CONCAT" name="forecast_date_CONCAT"/>
</log>

一个提示:您可以在“配置->记录”中启用“mediators.builtin.PropertyMediator”,以便在设置后直接查看属性的值。但乍一看,我并没有发现初始代码有任何错误:)
TID: [-1234] [] [2018-03-08 16:03:46,882]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  message = meteo_data_population_insert START !!! {org.apache.synapse.mediators.builtin.LogMediator}
TID: [-1234] [] [2018-03-08 16:03:46,883]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  forecast_date = 2018-03-14 {org.apache.synapse.mediators.builtin.LogMediator}
TID: [-1234] [] [2018-03-08 16:03:46,883]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  morning_min_temp = 24 {org.apache.synapse.mediators.builtin.LogMediator}
TID: [-1234] [] [2018-03-08 16:03:46,884]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  forecast_date_CONCAT = null {org.apache.synapse.mediators.builtin.LogMediator}
<property expression="fn:concat(get-property('forecast_date'), '_morning')" name="forecast_date_CONCAT" scope="default" type="STRING"/>
<log level="custom">
    <property expression="$ctx:forecast_date_CONCAT" name="forecast_date_CONCAT"/>
</log>