标签 CFLOOP 的属性验证错误
Attribute validation error for tag CFLOOP
我对这种 coldfusion 语言很陌生,我做了一些教程,我只是按照课程告诉我的去做,但是我在这段代码上遇到错误,有人可以向我解释为什么吗?
<cfset carrinho=ArrayNew(1)>
<cfset carrinho[1]=StructNew()>
<cfset carrinho[1].nome="Camisa da Seleção Brasileira">
<cfset carrinho[1].valor=189>
<cfset carrinho[1].quantidade=1>
<cfset carrinho[2]=StructNew()>
<cfset carrinho[2].nome="Chuteira CR7">
<cfset carrinho[2].valor=470>
<cfset carrinho[2].quantidade=2>
<cfset carrinho[3]=StructNew()>
<cfset carrinho[3].nome="Short do Messi">
<cfset carrinho[3].valor=180>
<cfset carrinho[3].quantidade=1>
<cfdump var="#carrinho#">
<cfloop list="#carrinho#" item="name" index="i">
<cfoutput>
#i#:#name#
</cfoutput>
</cfloop>
原因是carrinho
是数组,不是列表。你可以用很多不同的方式循环它。
方法是使用array
属性循环
<cfset counter=1>
<cfloop array="#carrinho#" index="item">
<cfoutput>#counter#. #item.nome#</cfoutput>
<cfset counter++>
</cfloop>
使用索引循环 ArrayLen
<cfloop from="1" to="#ArrayLen(carrinho)#" step="1" index="i">
<cfoutput>#i#. #carrinho[i].nome#</cfoutput>
</cfloop>
使用cfscript
for
循环
<cfscript>
counter=1;
for(item in carrinho){
writeoutput("#counter#. #item.nome#")
counter++;
}
</cfscript>
这些只是一些实现方法。还有许多其他方法可以做到这一点。
以 RRK 的回答和 Ageax 的评论为基础:
这就是在 ColdFusion 脚本中构建数组(带有嵌套结构)是多么容易。
备注:
"//" = a comment
"[]" = an implicit array
"{}" = an implicit struct
<cfscript>
// Build the array with structs.
carrinho = [
{
nome : "Camisa da Seleção Brasileira" ,
valor : 189 ,
quantidade : 1
} ,
{
nome : "Chuteira CR7" ,
valor : 470 ,
quantidade : 2
} ,
{
nome : "hort do Messi" ,
valor : 180 ,
quantidade : 1
}
] ;
// Using the counter method to determine the number
counter=1 ;
for(item in carrinho) {
writeoutput(counter & ". " & item.nome & "<br>") ;
counter++;
}
// Using each() member function
carrinho.each(function(element, index) {
writeOutput(index & ". " & element.nome & "<br>");
});
</cfscript>
输出:
- Camisa da Seleção Brasileira
- Chuteira CR7
- hort do Messi
这是适合您的解决方案
<cfset carrinho=ArrayNew(1)>
<cfset carrinho[1]=StructNew()>
<cfset carrinho[1].nome="Camisa da Seleção Brasileira">
<cfset carrinho[1].valor=189>
<cfset carrinho[1].quantidade=1>
<cfset carrinho[2]=StructNew()>
<cfset carrinho[2].nome="Chuteira CR7">
<cfset carrinho[2].valor=470>
<cfset carrinho[2].quantidade=2>
<cfset carrinho[3]=StructNew()>
<cfset carrinho[3].nome="Short do Messi">
<cfset carrinho[3].valor=180>
<cfset carrinho[3].quantidade=1>
<cfdump var="#carrinho#">
<cfloop array="#carrinho#" index="i">
<cfoutput>
#i.nome#
</cfoutput>
</cfloop>
你应该使用数组而不是列表。
这是一个 CF10 示例,循环出数组,然后使用内部循环来循环出表示数组每个索引的结构:
<cfoutput>
<cfset carrinho=ArrayNew(1)>
<cfset carrinho[1]=StructNew()>
<cfset carrinho[1].nome="Camisa da Seleção Brasileira">
<cfset carrinho[1].valor=189>
<cfset carrinho[1].quantidade=1>
<cfset carrinho[2]=StructNew()>
<cfset carrinho[2].nome="Chuteira CR7">
<cfset carrinho[2].valor=470>
<cfset carrinho[2].quantidade=2>
<cfset carrinho[3]=StructNew()>
<cfset carrinho[3].nome="Short do Messi">
<cfset carrinho[3].valor=180>
<cfset carrinho[3].quantidade=1>
<cfloop array="#carrinho#" index="obj">
<cfloop collection="#obj#" item="key">
#key#: #obj[key]#<br />
</cfloop>
<br />
</cfloop>
</cfoutput>
我对这种 coldfusion 语言很陌生,我做了一些教程,我只是按照课程告诉我的去做,但是我在这段代码上遇到错误,有人可以向我解释为什么吗?
<cfset carrinho=ArrayNew(1)>
<cfset carrinho[1]=StructNew()>
<cfset carrinho[1].nome="Camisa da Seleção Brasileira">
<cfset carrinho[1].valor=189>
<cfset carrinho[1].quantidade=1>
<cfset carrinho[2]=StructNew()>
<cfset carrinho[2].nome="Chuteira CR7">
<cfset carrinho[2].valor=470>
<cfset carrinho[2].quantidade=2>
<cfset carrinho[3]=StructNew()>
<cfset carrinho[3].nome="Short do Messi">
<cfset carrinho[3].valor=180>
<cfset carrinho[3].quantidade=1>
<cfdump var="#carrinho#">
<cfloop list="#carrinho#" item="name" index="i">
<cfoutput>
#i#:#name#
</cfoutput>
</cfloop>
原因是carrinho
是数组,不是列表。你可以用很多不同的方式循环它。
方法是使用
array
属性循环<cfset counter=1> <cfloop array="#carrinho#" index="item"> <cfoutput>#counter#. #item.nome#</cfoutput> <cfset counter++> </cfloop>
使用索引循环
ArrayLen
<cfloop from="1" to="#ArrayLen(carrinho)#" step="1" index="i"> <cfoutput>#i#. #carrinho[i].nome#</cfoutput> </cfloop>
使用
cfscript
for
循环<cfscript> counter=1; for(item in carrinho){ writeoutput("#counter#. #item.nome#") counter++; } </cfscript>
这些只是一些实现方法。还有许多其他方法可以做到这一点。
以 RRK 的回答和 Ageax 的评论为基础: 这就是在 ColdFusion 脚本中构建数组(带有嵌套结构)是多么容易。
备注:
"//" = a comment
"[]" = an implicit array
"{}" = an implicit struct
<cfscript>
// Build the array with structs.
carrinho = [
{
nome : "Camisa da Seleção Brasileira" ,
valor : 189 ,
quantidade : 1
} ,
{
nome : "Chuteira CR7" ,
valor : 470 ,
quantidade : 2
} ,
{
nome : "hort do Messi" ,
valor : 180 ,
quantidade : 1
}
] ;
// Using the counter method to determine the number
counter=1 ;
for(item in carrinho) {
writeoutput(counter & ". " & item.nome & "<br>") ;
counter++;
}
// Using each() member function
carrinho.each(function(element, index) {
writeOutput(index & ". " & element.nome & "<br>");
});
</cfscript>
输出:
- Camisa da Seleção Brasileira
- Chuteira CR7
- hort do Messi
这是适合您的解决方案
<cfset carrinho=ArrayNew(1)>
<cfset carrinho[1]=StructNew()>
<cfset carrinho[1].nome="Camisa da Seleção Brasileira">
<cfset carrinho[1].valor=189>
<cfset carrinho[1].quantidade=1>
<cfset carrinho[2]=StructNew()>
<cfset carrinho[2].nome="Chuteira CR7">
<cfset carrinho[2].valor=470>
<cfset carrinho[2].quantidade=2>
<cfset carrinho[3]=StructNew()>
<cfset carrinho[3].nome="Short do Messi">
<cfset carrinho[3].valor=180>
<cfset carrinho[3].quantidade=1>
<cfdump var="#carrinho#">
<cfloop array="#carrinho#" index="i">
<cfoutput>
#i.nome#
</cfoutput>
</cfloop>
你应该使用数组而不是列表。
这是一个 CF10 示例,循环出数组,然后使用内部循环来循环出表示数组每个索引的结构:
<cfoutput>
<cfset carrinho=ArrayNew(1)>
<cfset carrinho[1]=StructNew()>
<cfset carrinho[1].nome="Camisa da Seleção Brasileira">
<cfset carrinho[1].valor=189>
<cfset carrinho[1].quantidade=1>
<cfset carrinho[2]=StructNew()>
<cfset carrinho[2].nome="Chuteira CR7">
<cfset carrinho[2].valor=470>
<cfset carrinho[2].quantidade=2>
<cfset carrinho[3]=StructNew()>
<cfset carrinho[3].nome="Short do Messi">
<cfset carrinho[3].valor=180>
<cfset carrinho[3].quantidade=1>
<cfloop array="#carrinho#" index="obj">
<cfloop collection="#obj#" item="key">
#key#: #obj[key]#<br />
</cfloop>
<br />
</cfloop>
</cfoutput>