我有一个奇怪的问题。在下面的代码中,我创建了一个简单的单元素数组x,以及一个简单的变量y。在数组的情况下,我将第一个元素的值设置为某个文本,就像我对变量一样。当我尝试使用logger.info输出文本时,我得到一个错误,我没有得到变量。我正在使用Mirth Connect 3.3.1.7856。
代码如下。请注意,这是整个通道中的唯一代码,所有这些都在单个源转换器步骤中。
var x = [];
x[0] = 'abc';
var y = 'xyz';
logger.info('y: ' + y.toString());
logger.info('attachmentLength: ' + x.length);
logger.info.(x[0].toString());
前两个" logger.info"命令工作正常。但是,在尝试执行最后一个时,会记录下面的错误。
消息来源代码:
170: var x = [];
171: x[0] = 'abc';
172: var y = 'xyz';
173: logger.info('y: ' + y.toString());
174: logger.info('attachmentLength: ' + x.length);
175: logger.info.(x[0].toString());
176: if ('xml' === typeof msg) {
177: if (msg.hasSimpleContent()) {
178: msg = msg.toXMLString();
179: }
LINE NUMBER: 175
DETAILS: TypeError: function info() {/*
void info(java.lang.Object,java.lang.Throwable)
void info(java.lang.Object)
*/}
is not an xml object.
通知行176-179不是我脚本的一部分。这是Mirth正在补充的内容。
几周前,我遇到了另一个问题,即变量被视为Java变量而不是Javascript变量。解决方案是使用变量做一些事情,使其成为Javascript而不是Java变量。不幸的是,我不能完全记住问题或解决方案,以便再次找到它,或者甚至在我的代码中找到我做出更改的地方。也许这是我可以在这里尝试的。
是否可以将数组视为Java数组而不是Javascript数组?如果是这样,我可以强迫"它是一个Javascript数组,不知何故?
还有一点需要注意 - 所有数据类型(包括源连接器数据类型)都设置为" Raw",这意味着不应该要求任何源数据采用任何特定格式,包括XML。 / p>
我完全不知道如何解决这个问题。任何帮助将不胜感激。
谢谢,
MMall
答案 0 :(得分:0)
我猜这些更改是为了支持JSON对象,这就是为什么它不能以预期的方式工作。所以,你可以使用其中一个:
var x = new Array();
x[0] = 'abc';
logger.info("Length: " + x.length);
logger.info(x[0].toString());
var y = [];
y[0] = 'dfg';
logger.info("Length: " + y.length);
logger.info(JSON.stringify(y[0]));
答案 1 :(得分:0)
这不是你的错误“。”导致你的问题?而不是:
logger.info.(x[0].toString());
你应该:
logger.info(x[0].toString());