CDI / Weld: ¿cómo manejar la actualización de la página del navegador después de finalizar la conversación?

En los primeros días de usar CDI, estoy navegando a una página con una conversación activa de larga duración usando faces-redirect = true, así que tengo una URL como ..myPage.xhtml? Cid = 1.

En algún momento termino la conversación, quiero decir que esto tiene que ser algo razonable o ¿podría usar el alcance de la sesión? De todos modos, finalizo la conversación y luego el usuario presiona F5, y luego, por supuesto, esto causa un error de 'conversación no encontrada' ya que cid = 1 no existe.

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

Excepto por el problema F5, funciona bien. Si alguien tiene alguna sugerencia, lo agradecería, espero que no me falte algo realmente obvio. Supongo que no hay forma de escapar de una redirección.

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta