当前位置:  开发笔记 > 编程语言 > 正文

使用键评估的ColdFusion循环结构失败!我错过了什么?

如何解决《使用键评估的ColdFusion循环结构失败!我错过了什么?》经验,为你挑选了1个好方法。

我在我的cfm中有这个代码,它有效


 
 
  
   
   
   
    
     
     
      
     
     
    
   
  
 

 
  
   
   
    
     
    
   
  
 

 


我已将它放入cfc以分离我的逻辑和我的观点,我试图使它更通用


 
  
  
  
  
  
 

 
  
  
  
  
  
   
    
    
    
     
      
      
       
      
  
 

   
  
  
  
 

 
  
  
  
   
    
     
     
      
       
      
     
    
   
  
  
 

而我的新cfm


 
 
 
 

...

它失败了,我收到此错误消息

CFML编译器遇到意外的coldfusion.compiler.CompilerInternalException异常.原因是:无法完成CFML到Java的翻译.发生在:

...

错误发生在C:\ path\to\document\root\cfc\ArrayManager.cfc:第21行
从C:\ path \调用到\ document\root\cfc\update-emp.cfm:第66行
从C调用:\C:\ path\to\document\root\cfc\update-emp.cfm:第66行

19 : 21 : 23`: :
20

:
22

我做错了什么或有更好的方法来完成我想要做的事情(在表中显示数据库内容并通过同一个表更新(更新和删除)数据库内容)



1> Adam Tuttle..:

您发布的错误消息表明您滥用了评估功能.根据文档,它的工作原理如下:

从左到右动态评估一个或多个字符串表达式.(左侧的评估结果可能在右侧的表达式中有意义.)返回评估最右侧表达式的结果.

但是你也遇到了其他问题.对于初学者,当您将代码移动到CFC时,您没有正确复制逻辑.

在您的工作代码中,您使用条件:


但是在你的CFC中你有:


这应该是:


接下来,您没有使用最佳语法进行评估,您可能根本不想使用它.该声明:

y = evaluate(0,key)

可以改写为:

y = evaluate(key)

由于key的值是"UPD_something",因此可以将其重写为:

y = [variables|arguments|etc].UPD_Something

(由于您没有明确指定变量作用域,因此CF将尝试按特定顺序在一组作用域中查找变量;这就是我使用语法[a | b | ...]的原因)

你可能不是这个意思,你可能想要表格中的值.由于密钥名称是动态的,因此您应该以这种方式访问​​它(而不是使用evaluate):

y = variables.instance.form[key]

我想这可能会解决它.所以,总结一下:

    更换你的发言(并确保你传递的"structString"的值包括下划线!)

    替换您的使用evaluate:y = variables.instance.form[key]

我希望能解决你的问题......

让它工作后,开始考虑你的变量名称."Array"是一个可怕的变量名,因为它实际上是CFML中的保留字.并且使用"x"和"y"根本不是描述性的.这些类型的问题使得这个问题难以回答.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有