2011-06-21 13 views
5

En los primeros días del uso de CDI estoy navegando a una página con una conversación de larga duración activa usando faces-redirect = true, por lo que tengo una URL como ..myPage.xhtml? Cid = 1.CDI/Weld: ¿cómo gestionar la actualización de la página del navegador después de finalizar la conversación?

En algún momento, termino la conversación, quiero decir, esto tiene que ser algo razonable para hacer o también podría usar el alcance de la sesión? De todos modos, termino la conversación y luego el usuario golpea F5, y luego, por supuesto, provoca un error de "conversación no encontrada" ya que cid = 1 no existe.

¿Alguien puede sugerir cómo evitar este problema? Estoy usando la implementación ViewScoped de Steven Verborgh y simplemente usando un bean con ámbito de conversación para pasar los parámetros entre las páginas. Así que tengo, por ejemplo, 2 beans @ViewScoped, cada uno de los cuales contiene la página 1 & 2. I @Inject el @ConversationScoped ParameterBean en ambos beans de ámbito de vista. Empiezo la conversación (parameterBean.getConversation(). Begin()) en el método de acción llamado desde página 1. En el evento preRenderView para la página 2, tomo una referencia a las propiedades de the parameterBean en una página 2 bean de respaldo variable de instancia y finaliza la conversación, ya está hecho, es trabajo y ya no es necesario.

Excepto por el problema de F5, funciona bien. Si alguien tiene alguna sugerencia, la agradecería, espero que no me esté perdiendo algo realmente obvio. Supongo que no se obtiene lejos de una redirección.

Gracias.

Respuesta

4

No hay solución para esto. El predeterminado @ConversationScoped está completamente roto. En su lugar, estoy usando @ConversationScoped de MyFaces CODI. Resuelve todos los problemas que puede obtener con el alcance estándar.

Cuestiones relacionadas