2012-01-30 5 views

Respuesta

5

Después de mirar el código , esto es lo que entiendo:

  1. Los datos de Flash son, en última instancia, para almacenar datos entre las solicitudes.
  2. Dado que Play no tiene estado, ese estado se guarda en una cookie de sesión, que se envía al cliente y se envía de vuelta con la siguiente solicitud.
  3. El mapa de datos es la información que proviene del cliente a través de la cookie.
  4. Out Map es la información que la aplicación Play escribe en la instancia de Flash.
  5. Si los datos se modifican, los datos en el Mapa de salida se utilizan para generar el contenido de la cookie para enviar de vuelta al cliente.

Así que de esto, diría, que flash.discard() se utiliza para descartar todo lo que iría al cliente, y flash.clear() se utiliza para descartar todo lo que vino del cliente ...

+0

Buena explicación, supongo que es obvio dado que el flash funciona, simplemente no pensé en eso. – ripper234

2

Esa es una buena pregunta. Aunque no sé la respuesta tampoco, el código fuente en GitHub debería ayudar:

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

Un vistazo rápido muestra el alcance mantiene dos HashMaps, uno llamado data y otra llamada out. Ambos almacenan la misma información. Pero el flash.clear() está actuando sobre data y flash.discard() está actuando sobre out ... divertido ...

Mejor llama tanto, por si acaso =)

+0

Sí, miré el código antes de publicarlo ... no me ayudó a entenderlo. – ripper234

+0

Ver la respuesta por @dertoni. – ripper234

Cuestiones relacionadas