Der Fehler, den ich bekommen, ist dies:Sitzung ist keine Struktur?
Element USER is undefined in a Java object of type class [Ljava.lang.String;
Die Codezeilen ich diese Fehlermeldung erhalten, wenn ich so etwas tun:
SESSION.user.functionName()
Es ist zufällig und ich gehe davon geschieht nachdem die Benutzersitzung abgelaufen ist. Mein Problem ist vor allem, ist der SESSION
Umfang immer eine Struktur? Wie/Warum hält ColdFusion es für eine Zeichenfolge?
Egal, mein Hauptproblem ist, dass ich CFWheels verwende. Alle meine Controller erweitern natürlich den Haupt-Controller.cfc
und alle meine Controller (außer dem öffentlichen) filtern durch eine checkLogin
Funktion. Diese Funktion hat dies darin:
<cfif !structKeyExists(session, "user")>
<cfif !structKeyExists(params,'layout') || params.layout EQ true>
<cfset redirectTo(route="home",error="You must be logged in to continue.") />
<cfelse>
<cfset flashInsert(error="You session has expired and you must login to continue. <a href=''>Reload the Page</a> to login.") />
<cfset redirectTo(controller="Shared",action="ajaxError") />
</cfif>
</cfif>
In diesem Teil der Funktion, überprüfe ich ausdrücklich, wenn user
im session
existiert und wenn es nicht eine Art und Weise tut oder das andere ich sie woanders zu senden. Wie in aller Welt kommt der Code über diesen Teil hinaus, um dann zu versagen, wenn die session
irgendwie eine Zeichenkette ist?
Nicht zu erwähnen gibt es verschiedene andere Orte, bevor ich auf die Fehlerlinie komme, wo ich sicherstelle, dass verschiedene Dinge im SESSION.user Objekt korrekt sind.
(Bearbeiten) Die Fehlermeldung besagt, dass das 'user' -Element String ist - nicht' session'. Erteilte Fehlermeldungen sind nicht immer 100% genau. Es kann auch bedeuten, dass der Schlüssel gar nicht existiert. Sie erhalten den gleichen Fehler von 'session.someKeyThatDoesNotExist.functionName()' – Leigh
Ist es nicht zu sagen, 'user' ist undefined im Objekt. Das Objekt ist die Klasse von String? – Leeish
Wenn Sie Recht haben, wenn ich '' in ' '. Dennoch macht es keinen Sinn, wie es andere Teile meines Codes übergangen haben könnte, indem ich Methoden im Benutzerobjekt benutzt habe, nur um zur Ansicht zu gelangen und dann fehlzuschlagen, oder? –
Leeish