En JEE 6 con Seam 3 tenemos el ConversationScope (como SessionScope pero delimitado por la aplicación >>)
Éste se propaga automágicamente por cualquier request o redirect dento de JSF por medio de un parámetro reservado cid, el cual indica que se está dentro de la misma conversación.
<!--por ejemplo con JSF 2--> <h:form> <h:commandButton action="#{bean.metodo}"/> </h:form>
/** * y en el bean */ public String metodo(){ return "pagina.xhtml"; //se envía implícitamente el cid }
Sin embargo, si reescribimos nuestras URLs con PrettyFaces, esto deja de funcionar
public String metodo(){ return "pretty:pagina"; //pretty faces. }
En los foros de Ocpsof dicen que se está trabajando en ello >>
Pero pude reproducir el bug con PrettyFaces 3.3.2
Ni siquiera sirve como workaround enviar explícitamente el parámetro
<h:form> <h:commandButton action="#{bean.metodo}"> <f:param name="cid" value="#{javax.enterprise.context.conversation.id}"/> <h:commandButton> </h:form>
Pero lo que sí funciona es que el retorno del método sea el nombre de la página << (a los JSF 2), con esto tenemos el cid y PrettyFaces realiza la sobrescritura luego de todas formas.
http://localhost:8080/App/pagina?cid=24