【发布时间】:2010-04-19 19:23:17
【问题描述】:
我有一个数据库表,它是一个定义术语的字典——键、值。我想从数据库中加载应用程序范围内的字典,并将其保留在那里以提高性能(它不会改变)。
我认为这可能是某种“结构”,但我对 ColdFusion(帮助另一个团队)非常陌生。
然后,我想对一些输出到浏览器的字符串做一些简单的字符串替换,循环遍历定义的术语并用一些 HTML 替换这些术语来定义术语(悬停或链接,详细信息后来才算出来,不重要)。
这是当前在 application.cfc 文件中的代码:
<cffunction name="onApplicationStart">
<cfquery name="qryDefinedTerms" datasource="mydsn">
SELECT term, definition FROM definedterms
</cfquery>
<cfset application.definedterms = Array(1)>
<cfloop query="qryDefinedTerms">
<cfset myHash = structNew()>
<cfset myHash.put("term", qryDefinedTerms.term)>
<cfset myHash.put("definition", qryDefinedTerms.definition)>
<cfset ArrayAppend(application.definedterms, myHash)>
</cfloop>
</cffunction>
调用页面尝试如下使用它:
function ReplaceDefinitions(inputstring) {
for (thisdef = 1 ;
thisdef LTE ArrayLen(application.definedterms);
thisdef = (thisdef+1)) {
inputstring = Replace(inputstring,
application.definedterms(thisdef).term,
application.definedterms(thisdef).definition, "ALL");
}
return inputstring;
}
当我调用该函数时,我返回:“元素 DEFINEDTERMS 在 APPLICATION 中未定义”。
编辑:强制调用 OnApplicationStart() 有效,显然 Cold Fusion 的 application.cfc 不像 ASP.NET 的 web.config,更改它不会重置应用程序。
【问题讨论】:
-
可能是一个愚蠢的问题,但是自从添加了新代码后,您是否重新启动了应用程序?如果您只是修改了 application.cfc 而不重新启动,则不会创建该结构(因为 onApplicationStart 方法已经运行)。我之前遇到过几次。
-
欺骗我来自 ASP.NET,我认为编辑 application.cfc 文件可以解决问题 - 特别是因为我对 application.cfc 所做的更改在它不编译时会抛出错误.如何重置应用程序? (我只有文件服务器访问服务器,没有访问 CF 管理工具。)
标签: string coldfusion struct application.cfc