我在stackoverflow上得到了很多帮助,我非常感谢。我似乎被困在正确编码这个列表循环。我知道有很多简单的方法来编写这个项目,但我的学生项目要求我通过URL传递变量。我试图简单地组合我通过URL传递的密码,以创建具有六个值(cold,fusion,dynamic and bert, ernie, oscar
)的所有密码组合。我已将问题隔离到我的List Loop。你们能告诉我在这里失踪了吗?提前谢谢。
错误消息:
投射类型的对象时出错 coldfusion.compiler.ASTstructureReference无法强制转换为 java.lang.String为不兼容的类型。
这通常表示a Java编程错误,虽然它也可能意味着你已经尝试过 以与设计不同的方式使用异物。
passwords.cfm:
<cfinclude template="header.cfm">
<body>
<h2>Loop List</h2>
<a href="looplist.cfm?List1=cold,fusion,dynamic&List2=bert,ernie,oscar">
Click here for all password combinations</a>
<cfinclude template="footer.cfm">
looplist.cfm:
<cfinclude template="header.cfm">
<h2>Loop List</h2>
<cfloop Index = "#URL.List1#" List = "#URL.List2#">
<cfloop Index = "#URL.List2#" List = "#URL.List1#">
</cfloop>
</cfloop>
<cfset passwordList= #URL.List1# & #URL.List2#>
<UL><cfoutput>#passwordList#</cfoutput><UL><BR>
<cfinclude template="footer.cfm">
答案 0 :(得分:2)
<cfloop Index = "#URL.List1#" ...>
“index”应该是一个包含变量的 name 的简单字符串,例如“MyVariable”。围绕URL.List1
的英镑符号强制要求评估该变量。所以你实际上传递了它的值作为名称,即"cold,fusion,dynamic"
。由于那不是valid variable name,这就是导致您看到的神秘编译错误的原因。
鉴于这是家庭作业,我不打算为你编写代码,而是提供一个你可以构建的例子。就像我在the comments of your other thread
中建议的那样简单地开始。为了简化操作,您可以暂时对URL参数进行硬编码。经常使用cfdump
和cfoutput
来显示不同点的变量,以便更好地了解代码的作用。
不要将List1
用于循环“index”和url变量。使用两个不同的变量名称。
简化示例:
<!--- Hard code values for testing ONLY --->
<cfset URL.List1 = "cold,fusion,dynamic">
<cfset URL.List2 = "bert,ernie,oscar">
<cfloop List="#URL.List2#" index="OuterValue">
<!--- Display current element in outer loop for debugging only --->
<cfoutput>
<h3>OUTER LOOP: Current element from URL.List2 is: #OuterValue#</h3>
</cfoutput>
<cfloop List = "#URL.List1#" index="InnerValue">
<!--- Display current element in inner loop for debugging only --->
<cfoutput>
INNER LOOP: Current value from URL.List1 is: #InnerValue#<br>
</cfoutput>
<!---
... real code that does something with the two variables here ....
--->
</cfloop>
</cfloop>
答案 1 :(得分:0)
以空密码列表开头。
然后你有了外部循环(索引i),从中取出组合单词的左侧。
从内循环(索引j)中取出组合单词的右侧。此外(内部循环),您构建第二个组合(切换右侧和左侧单词),然后将两个组合添加到“密码列表”。
<cfset passwordList = "" />
<cfloop index="i" list="#URL.List1#">
<cfset tempPasswordCombo1 = "" />
<cfset tempPasswordCombo2 = "" />
<cfloop index="j" list="#URL.List2#">
<cfset tempPasswordCombo1 = i & j />
<cfset tempPasswordCombo2 = j & i />
<cfset passwordList = listAppend(passwordList, tempPasswordCombo1) />
<cfset passwordList = listAppend(passwordList, tempPasswordCombo2) />
</cfloop>
</cfloop>
<cfoutput>#passwordList#</cfoutput>