2015-01-06 2 views
2

하나의 컨트롤러에서 새 세션을 만들고 변수를 설정하고이 변수를 세션에서 다른 작업으로 가져옵니다. 그러나 세션은 null 값을 반환합니다. 나는 Grails 2.3.7을 사용한다. 당신은 새로운 세션을 만들 필요가 없습니다Grails에서 세션 변수가 작동하지 않습니다.

class AuthorizationController { 

    def signIn() { 
     session.username = 'zzzz' 
     println(session.username) 
     redirect(action: 'logout') 
    } 

    def logout() { 
     println(session.username) 
    } 
} 

직접 컨트롤러에 변수 session 사용할 수 있습니다 :로

class AuthorizationController { 

    def signIn = { 

     def session = request.getSession(true) 
     session.setAttribute('username', 'zzzz') 
     println(session.getAttribute('username')) // <-- here work 
     redirect(action: logout) 
    } 

    def logout = { 
     println(session.getAttribute('username')) // <-- here not work 
    } 
} 

답변

2
은 코드를 변경

. 또한 getters & 설정자를 사용하여 세션에서 & 값을 설정하지 않아도됩니다. 위의 코드에서 언급 한 것처럼 직접 사용할 수 있습니다.

grails> 2.x를 사용하는 경우 컨트롤러 동작을 정의 할 때 클로저를 사용하지 마십시오. 대신 일반 메소드 유형을 사용하십시오.

+0

코드가 작동하지 않습니다. 하지만 setters 및 getters와 avaible 세션을 사용해보십시오. 그것은 일이다. – user3387291

+0

오, 죄송합니다. 내 잘못. 나는 내 대답에'='대신'=='를 사용했다. 나는 그것을 고쳤다. 확인 해봐. 이것은 또한 작동합니다. 덕분에 –

+0

. 리디렉션에서 괄호를 사용하면 해당 작업. 'redirect (action : logout()) ' – user3387291

관련 문제