Ich habe eine Datenbanktabelle, die ein Wörterbuch mit definierten Begriffen ist - Schlüssel, Wert. Ich möchte das Wörterbuch im Anwendungsbereich aus der Datenbank laden und es dort aus Leistungsgründen behalten (es ändert sich nicht).
Ich vermute, dass es sich um eine Art "Struktur" handelt, aber ich bin extrem neu in ColdFusion (ich helfe einem anderen Team).
Dann möchte ich einige einfache String-Ersetzung auf einige Zeichenfolgen, die Ausgabe an den Browser zu tun, Schleife durch die definierten Begriffe und ersetzen die Begriffe mit einigen HTML, um die Begriffe zu definieren (ein Hover oder ein Link, Details später ausgearbeitet werden, nicht wichtig).
Dies ist der aktuelle Code in der Datei 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>
Die aufrufende Seite versucht, sie wie folgt zu verwenden:
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;
}
Wenn ich die Funktion aufrufe, erhalte ich zurück: "Element DEFINEDTERMS ist in APPLICATION nicht definiert".
Edita: einen Aufruf von OnApplicationStart() zu erzwingen, funktionierte, anscheinend ist die application.cfc von Cold Fusion nicht wie die web.config von ASP.NET, eine Änderung führt nicht zum Zurücksetzen der Anwendung.