Schönes kleines WTF am späten Nachmittag:

BLAM!

Element STRUCTDATA.DEALIDS is undefined in LOCAL.
The error occurred in /var/www/.../some.cfc: line 120
118 : while( local.objCursor.hasNext() ){
119 : local.structData = local.objCursor.next();
120 : if (structKeyExists(local.structData,'dealIds') && isArray(local.structData.dealIds)) {

Erzählt das structKeyExists hier Märchen und das Element gibt’s tatsächlich nicht in der Struture? Natürlich nicht – structKeyExists macht hier durchaus seinen Job, das Element dealIds ist definitiv in local.structData vorhanden.

Die Fehlermeldung gibt den richtigen Hinweis:

Element STRUCTDATA.DEALIDS is undefined in LOCAL

ColdFusion ist nicht case-sensitiv. Intern sind alle Variablen in Uppercase. Wenn man nun wie ich allerdings häufig mit Java-Komponenten hantiert, dann erhält man Structures bzw. Hash-Maps, deren Keys eben nicht in Großbuchstaben geschrieben sind, sondern wie hier in camelCase. Die bequeme Dot-Notation für echte ColdFusion-Structures knallt dann, d.h. man sollte hier tunlichst die eckigen Klammern bemühen:

Dann klappt’s auch mit den Java-HashMaps 🙂

Kommentar verfassen