2014-02-20 9 views
2

내 문제는 SimpleResult가 해당 세션에 대한 읽기 액세스를 허용하지 않는 것인데 쓰기 액세스 (withSession) 만 있습니다.스칼라 플레이 : ActionBuilder에서 래핑 된 액션의 결과 세션을 수정할 수 있습니까?

object MyAction extends ActionBuilder[MyRequest] { 

    def invokeBlock[A](
     request: Request[A], 
     block: (MyRequest[A]) => Future[SimpleResult] 
    ): Future[SimpleResult] = { 
     // do stuff, create x, y 
     val resultFuture = block(MyRequest(x, y, request) 
     // Now I want to modify resultFuture's session, 
     // keeping any changes block might have done to request.session. 
     // And I'd rather not parse result's headers by hand to do that. 
    } 
} 

무엇이 누락 되었습니까?

답변

1

이것은 커널 2.2.x에서 불가능한 것 같다, 그러나 인 2.3.x에서 play.api.mvc.Result이 새로운 방법 addingToSessionremovingFromSession 결과에서 세션 값을 추가 및 제거 할 수 있습니다.

... 
resultFuture map (_.addingToSession(myKey -> myValue)(request)) 
... 
:

그래서 위의 문제는 해결 될 수있다