奇怪的冷血错误:“0”

时间:2011-09-20 08:50:44

标签: templates coldfusion

我有一个页面,其中包含一些重复多次的代码。我将代码分解为模板文件并包含模板文件以避免重复。但是,我收到了最奇怪的错误 - 常规调试coldfusion错误显示“以下信息是供网站开发人员用于调试目的的。”和“处理请求时出错”...但通常有错误消息的部分只是说“0”。 (如果我查看堆栈跟踪部分,我看到“java.lang.ArrayIndexOutOfBoundsException:0”......)这是什么意思?

除了我从未见过像这样的感冒错误并且不明白它所指的是什么之外,我很惊讶我首先得到了一个错误。该页面正常工作,我将代码完全复制到另一个文件中并使用“cfinclude”包含它...如果我将代码复制回来,它就可以了。我认为cfinclude只是将文件中的代码直接插入到页面中 - 如何使用cfinclude得到错误,我没有得到文字代码?关于cfinclude如何运作,我错过了什么?

更新:问题似乎是嵌套的cfoutput。我有类似的东西:

<cfoutput group="myGroup">
   <cfoutput group="myNestedGroup">
      ... lots of code ...
   </cfoutput>
</cfoutput>

这就是抛出错误的原因。有什么想法吗?

更新2:

这似乎是一个Coldfusion错误。有人能想到一个解决方法吗?

2 个答案:

答案 0 :(得分:1)

这可能是非常明显的,所以我很抱歉,但cfouput还需要包含 query =“”

当键值实际不存在时,我通常会在使用数组或结构时得到 ArrayIndexOutOfBoundsException ,即 anexample [keyValue] .data1 。我建议您手动查看作为第一个调用端口的数据,或者将其放入 ctry / cfcatch 以缩小可能导致它的行。

答案 1 :(得分:0)

如果您的问题是您无法在一组嵌套的分组cfoutput标记中间进行cfinclude,那么您有两个选择(除了单独保留工作代码)...

一种方法是编写一个函数,将查询作为参数并执行整套cfoutput语句等。

另一种是声明一些局部变量,这些局部变量包含在包含它之前需要包含的查询位 - 包括访问与包含页面相同的变量范围。想一想,听起来你可能没有使用对查询变量的显式引用,这本身就是解决方案。因此,而不是:#foo#使用:#variables.queryname.foo#