can't restore parent conversation without redirect
koatto Apr 9, 2008 10:39 PMafter invoking an action method marked with @End within a nested conversation the parent one is not restored.
Forcing the action method to redirect even to the same page with the beforeRedirect attribute, the stuff works.
that's the use case:
page :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.com/products/seam/taglib" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jstl/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" > <HEAD> <title>test </title> </HEAD> <body> <h1>test started at : #{currentTime}</h1> <h:form > <h:outputText value=" #{currentTime} - id=#{conversation.id} - longRunning=#{conversation.longRunning} - nested=#{conversation.nested}"/> <br/> <h:commandLink ajaxRendered="false" rendered="#{!conversation.longRunning}" value="start long running" action="#{convTest.startLongRunning}" > <s:conversationId/> </h:commandLink> <br/> <h:commandLink ajaxRendered="false" rendered="#{conversation.longRunning}" value="end current" action="#{convTest.endCurrent}"> <s:conversationId/> </h:commandLink> <br/> <h:commandLink rendered="#{!conversation.nested and conversation.longRunning}" value="start nested" action="#{convTest.startNested}"> <s:conversationId/> </h:commandLink> </h:form> </body> </html>
component :
@Name("convTest") public class ConvTest { @Logger Log log; @Begin public void startLongRunning(){ log.debug("startLongRunning"); } @Begin(nested=true) public void startNested(){ log.debug("startNested"); } @End public void endCurrent(){ log.debug("endCurrent"); } }
changing the end method in the following way makes everythig work :
@End(beforeRedirect=true) public String endCurrent(){ log.debug("endCurrent"); return "/test.xhtml"; }
what's wrong?
Thanks