You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2 EI 6.5中Script Mediator的Javascript脚本运行异常返回True

WSO2 EI 6.5 Script Mediator返回值异常问题解决方案

根因分析

  • 类型适配错误:WSO2 EI 6.5内置Rhino引擎作为JS脚本执行环境,通过mc.getProperty()从Synapse上下文读取的属性默认是Java原生对象(如XML节点对应的OMText/OMAttribute实例),未显式转为JS原生类型直接做比较、拼接操作时,会出现非预期的类型转换结果。
  • 逻辑存在漏洞:result变量仅在if(exponent > 0)分支内赋值,若该分支不执行,result属于未初始化状态,Rhino引擎将未定义值写入Synapse上下文时会被转换为布尔真值True。同时分支内部逻辑存在错误:exponent>0时取负得到itera,循环条件i < itera永远不成立,补零逻辑完全不会执行。
  • XML转义问题:脚本内的特殊字符未用CDATA包裹,转义后的<符号可能在脚本执行时解析异常。

修复方案

替换原有Script Mediator配置为以下内容:

<script language="js"><![CDATA[
// 显式转换为JS原生类型
var exponent = parseInt(mc.getProperty('exponentBalance').toString());
var balance = mc.getProperty('balance').toString();
// 提前初始化结果变量
var result = balance;

if(exponent > 0) {
    // 生成对应长度的补零字符串,无需循环
    var zeroPadding = '0'.repeat(exponent);
    result = balance + zeroPadding;
}

// 写入上下文
mc.setProperty("result", result);
]]></script>

验证说明

修改完成后重新部署API,日志中result字段即可输出预期的拼接后字符串,不再出现布尔值True的异常情况。

内容的提问来源于stack exchange,提问作者Cesar Justo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:39:03