|
|
1
4
你问了很多不同的问题,但我会尽力回答的!你还没有说你使用的是什么版本的coldfusion,所以我将用在coldfusion 8及更高版本中的代码来回答。 ColdFusion使用一个名为application.cfc的特殊文件,该文件放在Web应用程序的路径中(类似于ASP.NET中的global.asax)。它在中有一个名为onapplicationstart的方法,该方法仅在应用程序启动时执行(所以不是在每个请求时执行)。这是一个放置常数的好地方。下面是一个简单的示例,它使用{}语法设置结构(类似于其他语言中的映射): 应用.cfc <cfcomponent>
<cffunction name="onApplicationStart">
<!--- set global constants here --->
<cfset application.foo = { a=1, b=2, c="my string" }>
</cffunction>
</cfcomponent>
如果你想从数据库中获取数据,这里有一个简单的方法(有很多其他方法可能更好,但这应该让你开始!) <cfcomponent>
<cffunction name="onApplicationStart">
<!--- set global constants here --->
<cfset application.datasource = "mydsn">
<cfquery name="qryConstants" datasource="#application.datasource#">
select key, value
from tblConstants
</cfquery>
<cfset application.constants = {}>
<cfloop query="qryConstants">
<cfset application.constants[ qryConstants.key ] = qryConstants.value>
</cfloop>
</cffunction>
</cfcomponent>
对于替换字符串中的值,可以执行以下操作: somescript.cfm公司 <cfsavecontent variable="somestring">
Hello, ${key1} how are you? My name is ${key2}
</cfsavecontent>
<!--- replace the ${key1} and ${key2} tokens --->
<cfloop collection="#application.constants#" item="token">
<cfset somestring = ReplaceNoCase( somestring, "${#token#}", application.constants[ token ], "all" )>
</cfloop>
<!--- show the string with tokens replaced --->
<cfoutput>#somestring#</cfoutput>
正如我所说,有很多方法可以解决你的问题,但希望你会发现这是一个很好的起点(虽然我没有测试它!). 祝你好运,欢迎来到Coldfusion!
|
|
2
1
另外,在application.cfc中修复数组声明。应该是 ArrayNew(1) 而不是数组(1)。然后尝试重新初始化应用程序变量。一种方法是使用cfinvoke:
一旦你做到了,并且做了本提到的一些改变。这个功能应该起作用。注意:如果使用cf8,则可以使用shorter<=和++运算符+
|
|
|
4
0
不用看得太深,我发现:
应该是这样的:
在cf(和许多语言一样)中,parens表示函数调用,方括号表示数组引用。 |