我想使用Mule 3.8.3检查URL中是否存在URI参数,并且还需要确保在Anypoint Studio 6.2和Mule 3.8.3中使用Choice组件时inboundProperties不为空。
我试过了:
#[message.inboundProperties.'http.uri.params'.code != empty]
#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.uri.params'.code)]
对于我得到的两个
org.mule.api.expression.ExpressionRuntimeException:执行 表达 “org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.code)” 失败。
还有其他方法可以尝试吗?
答案 0 :(得分:2)
有两个" Expression"口感。
1的表达变压器强>
Example : <expression-transformer expression="#[message.inboundProperties.'http.uri.params'.param != empty]" doc:name="Expression"/>
2的表达组分强>
Example : <expression-component doc:name="Expression"/>
确保使用&#34; Expression-transformer &#34;如下图所示
在Anypoint Studio中尝试以下流程。它对我有用。
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8082" basePath="/testapi" doc:name="HTTP Listener Configuration"/>
<flow name="uri">
<http:listener path="uri/{param}/resource" config-ref="HTTP_Listener_Configuration" doc:name="HTTP"/>
<expression-transformer expression="#[message.inboundProperties.'http.uri.params'.param != empty]" doc:name="Expression"/>
<object-to-string-transformer doc:name="Object to String"/>
<set-payload value="#[payload]" doc:name="Set Payload"/>
</flow>
在浏览器中使用以下网址测试以上内容
http://localhost:8082/testapi/uri/testUriParam/resource
这也可以与选择组件组件一起使用。 请尝试以下代码:
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8082" basePath="/testapi" doc:name="HTTP Listener Configuration"/>
<flow name="uri">
<http:listener path="uri/{param}/resource" config-ref="HTTP_Listener_Configuration" doc:name="HTTP"/>
<choice doc:name="Choice">
<when expression="#[message.inboundProperties.'http.uri.params'.param != empty]">
<logger message="Found URI Param" level="INFO" doc:name="Logger"/>
<set-payload value="Found URI Param" doc:name="Set Payload"/>
</when>
<otherwise>
<logger level="INFO" doc:name="Logger" message="URI Param not found"/>
<set-payload value="URI Param not found" doc:name="Set Payload"/>
</otherwise>
</choice>
</flow>