cfdirectory loop限制结果

Dev*_*ily 1 coldfusion cfdirectory cfloop

我发现很难理解这一点.如何将结果限制为50.假设如果在目录中我有1000个文件,我怎么能限制它以便只循环50个文件.

<cfdirectory action="list" directory="#ExpandPath('/downloaded/')#" name="listRoot" filter="*.xml" recurse="false" sort="datelastmodified asc">
<cfoutput>
   <cfloop query="listRoot" from="1" to="50" index="i">
           ....
   </cfloop>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我收到以下错误消息

标签CFLOOP的属性验证错误.

Lei*_*igh 6

如果您查看完整的错误消息,它包含答案(强调我的):

它具有无效的属性组合:from,index,query,to.可能的组合是:

  • 必需属性:'query'.可选属性:'endrow,startrow'.
  • ...
  • 必需属性:'from,index,to'.可选属性:'step'.

代码试图混合两种不同类型的循环:查询循环和从/到循环.这不是一个有效的组合.您可以使用一个query循环一个from/to循环,但不能同时使用.

话虽如此,由于目标是显示输出,实际上没有必要cfloop.只需将cfoutput与"startRow"和"maxRows"属性一起使用:

   <cfoutput query="listRoot" startRow="1" maxRows="50">
       #name#<br>
   </cfoutput>
Run Code Online (Sandbox Code Playgroud)

正如在另一个答案中提到的,CF的最新版本也支持for ...in循环:

<cfscript>
   for (row in listRoot) {
      writeOutput("<br>Debug: name value = "& row.name );
   }
</cfscript>
Run Code Online (Sandbox Code Playgroud)