WSO2脚本中介:用正则表达式替换函数抛出异常

时间:2015-11-25 16:13:44

标签: javascript regex wso2 wso2esb

我的内联WSO2脚本调解器中有以下替换表达式:

var cellId=mc.getProperty("RetreiveCellId");
cellId=cellId.replace(/\d+/, function(n){ return ++n });

我试图增加cellId中的第一个数字。 cellId的形式为“R2C2”,一旦递增,它将是R3C2。这在使用html尝试的javascript中工作正常。但是在内联脚本调解器中抛出以下异常:

[2015-11-25 21:20:20,216] ERROR - ScriptMediator The script engine returned an error executing the inlined js script function mediate
com.sun.phobos.script.util.ExtendedScriptException: org.mozilla.javascript.EvaluatorException: Cannot convert /d+/ to java.lang.Character (<Unknown Source>#5) in <Unknown Source> at line number 5

可能的原因是什么?脚本调解器不支持正则表达式吗?如果是这样,有什么替代方法可以实现同样的目标?

1 个答案:

答案 0 :(得分:1)

Javascript是执行java代码的引擎。所以你不能使用很多Javascript函数。我解决了同样的问题。

<script language="js">
var cellId=13333;
power=java.lang.Math.floor(java.lang.Math.log10(cellId)); 
addition=java.lang.Math.pow(10,power);  
cellId = java.lang.Integer(cellId+addition);            
mc.setProperty("test",cellId);
</script>

如果算法不好,打扰一下算法。我想告诉你使用java命名空间。