Ошибки я получаю это:Сессия не является структурой?
Element USER is undefined in a Java object of type class [Ljava.lang.String;
Строки коды я получаю эту ошибку будет, когда я делаю что-то вроде этого:
SESSION.user.functionName()
Пришло случайно, и я полагаю, что происходит после окончания сеанса пользователя. Моя проблема в первую очередь заключается в том, что область SESSION
всегда является структурой? Как/почему ColdFusion считает, что это строка.
Независимо от этого, моя основная проблема в том, что я использую CFWheels. Все мои контроллеры, конечно, расширяют основной Controller.cfc
, и все мои контроллеры (кроме публичного) фильтруют через функцию checkLogin
. Эта функция имеет это в нем:
<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>
В этой части функции, я явно проверить, если user
существует в session
, и если это не так или другого я посылаю их куда-нибудь в другом месте. Как на самом деле код проходит мимо этой части, а затем сбой, когда session
- это как-то строка?
Не говоря уже о том, что есть другие места, прежде чем я доберусь до строки ошибки, где я уверен, что различные вещи в объекте SESSION.user верны.
(Изменить) В сообщении об ошибке говорится, что элемент 'user' является строкой, а не' session'. Предоставленные сообщения об ошибках не всегда на 100% точны. Это также может означать, что ключ вообще не существует. Вы получаете ту же ошибку из 'session.someKeyThatDoesNotExist.functionName()' – Leigh
Разве это не означает, что 'user' не определено в объекте. Объектом является класс String? – Leeish
Если вы правы, если я изменяю '' to ' '. Тем не менее, не имеет никакого смысла, как он мог пройти мимо других частей моего кода, используя методы в пользовательском объекте, просто чтобы получить представление, а затем провалиться, не так ли? –
Leeish