I experimented with methods to begin a pageflow in seam 2.0.1.
It seems like the pages.xml method doesn't work if you are joining an existing conversation, the page flow doesn't get started see:
jpdl:
<pageflow-definition name="manageProduct"> <start-page name="editProduct" view-id="/editProduct.xhtml"> <transition name="next" to="addProductFamilyRel"> <action expression="#{productAction.saveAttributes}" /> </transition> <transition name="cancel" to="end" /> </start-page>
pages.xml:
<page view-id="/editProduct.xhtml"> <begin-conversation join="true" pageflow="manageProduct" /> </page>
JSF that should trigger this page rule:
jsf page:
<h:form id="addproduct"> <h:commandButton action="/editProduct.xhtml" value="Add Product" /> </h:form>
if I try exactly the same but with:
<page view-id="/editProduct.xhtml"> <begin-conversation nested="true" pageflow="manageProduct" /> </page>
seam starts the pageflow in a nested conversation.
Interestingly enough if I try to start the same pageflow from:
<s:link pageflow="manageProduct" propagation="begin" />
instead of a pages.xml rule it works normally even if i'm already inside a conversation. Is this because
s:link propagation="begin"
will start a new conversation in parallel of the existing conversation? I decided to drop the s:link approach because it would force me to start the pageflow from every possible link in my page and it also triggers Illegal Navigation FacesMessage in the next page render (pageflow startpage).
Any help to clarify all this would be appreciated,
Page flow cannot be started when joining an existing conversation sounds like a bug to me unless i'm not using this as intended ?
Thanks,
-Guillaume
This sounds correct to me. Seam begins pageflows when conversations start,
If you want to begin the pageflow at some other time, try calling the Seam built-in component that controls pageflows directly.