У меня есть таблица базы данных, которая представляет собой словарь определенных терминов — ключ, значение. Я хочу загрузить словарь в область приложения из базы данных и сохранить его там для производительности (он не меняется).
Я понимаю, что это, вероятно, своего рода "структура", но я крайне новичок в 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() сработал, видимо, application.cfc Cold Fusion не похож на web.config ASP.NET, его изменение не приводит к сбросу приложения.