2012-01-30 18 views

Odpowiedz

5

Po patrząc na kod , to rozumiem:

  1. Dane Flash są ostatecznie przeznaczone do przechowywania danych między żądaniami.
  2. Ponieważ gra jest bezstanowa, ten stan jest zapisywany w pliku cookie sesji, który jest wysyłany do klienta i wysyłany z następnym żądaniem.
  3. Mapa danych to dane, które pochodzą od klienta za pośrednictwem pliku cookie.
  4. Wyjściowa mapa to dane, które aplikacja Play zapisuje w instancji Flash.
  5. Jeśli dane uległy zmianie, dane na zewnątrz mapy służą do budowania zawartości pliku cookie w celu odesłania do klienta.

Z tego powodu powiedziałbym, że flash.discard() jest używany do wyrzucania wszystkiego, co trafiłoby do klienta, a flash.clear() jest używany do wyrzucania wszystkiego, co pochodzi od klienta ...

+0

Dobre wyjaśnienie, wydaje mi się oczywiste, biorąc pod uwagę działanie lampy błyskowej, po prostu o tym nie myślałem. – ripper234

2

To dobre pytanie. Chociaż nie wiem, czy odpowiedź, kod źródłowy na github powinno pomóc:

https://github.com/playframework/play/blob/master/framework/src/play/mvc/Scope.java

Szybki rzut oka pokazuje Zakres utrzymuje dwa hashmaps, jeden o nazwie data i drugi o nazwie out. Oboje przechowują te same informacje. Ale flash.clear() działa na data i flash.discard() działa na out ... Śmieszne ...

Lepsze połączenia obu, tak na wszelki wypadek =)

+0

Tak, sprawdziłem kod przed wysłaniem ... to nie pomogło mi zrozumieć. – ripper234

+0

Zobacz odpowiedź @ dertoni. – ripper234

Powiązane problemy