Say I have the following jPDL pageflows:
PF1: page1.xhtml -> page2.xhtml
PF2: page1.xhtml -> page3.xhtml
PF3: page4.xhtml -> page5.xhtml

What I want to happen is that when the user goes to "controller.seam?flow=PF?", 
they'll automatically be redirected to the right page and start the right flow. 
Unfortunately, though that seems a simple task, in reality it's a big pain to 
do.

Ideally, I'd like to be able to do:

  |     <page view-id="/controller.xhtml" action="#{controller.getFlow}">
  |             <param name="flow" value="#{controller.flow}" />
  | 
  |         <navigation>
  |             <rule if-outcome="PF1">
  |                 <begin-conversation join="true" pageflow="PF1" />
  |             </rule>
  |             <rule if-outcome="PF2">
  |                 <begin-conversation join="true" pageflow="PF2" />
  |             </rule>
  |             ...
  |         </navigation>
  |     </page>
  | (even that in an ideal world would be more concise, as you can most likely 
envision)

However, that doesn't work! If the pageflow has a <start-page> node, Seam 
doesn't like that its view-id is different than the current page (the 
controller). If the pageflow has a <start-state> node (automatically going to 
the first page in the flow), Seam complains that it can't do that while in a 
RENDER_RESPONSE phase.

It would seem the following might get around those issues (though add even more 
duplicate code):

  |             <rule if-outcome="PF1">
  |                 <redirect view-id="page1.xhtml" />
  |                 <begin-conversation join="true" pageflow="PF1" />
  |             </rule>
  | 

However, that doesn't work either! Seam doesn't allow multiple elements inside 
a rule element.

Currently, I'm solving the problem by doing the following; it works, but has 
lots of ugly duplication (antithema to Seam's goals):

  |     <page view-id="/controller.xhtml" action="#{controller.getFlow}">
  |             <param name="flow" value="#{controller.flow}" />
  | 
  |         <navigation>
  |             <rule if-outcome="PF1">
  |                 <redirect view-id="/page1.xhtml" />
  |             </rule>
  |             <rule if-outcome="PF2">
  |                 <redirect view-id="/page1.xhtml" />
  |             </rule>
  |             <rule if-outcome="PF3">
  |                 <redirect view-id="/page4.xhtml" />
  |             </rule>
  |         </navigation>
  |     </page>
  |     
  |     <page view-id="/page1.xhtml" action="#{controller.getFlow}">
  |         <navigation>
  |             <rule if-outcome="PF1">
  |                 <begin-conversation join="true" pageflow="PF1" />
  |             </rule>
  |         </navigation>
  |     </page>
  | 
  |     <page view-id="/page1.xhtml" action="#{controller.getFlow}">
  |         <navigation>
  |             <rule if-outcome="PF2">
  |                 <begin-conversation join="true" pageflow="PF2" />
  |             </rule>
  |         </navigation>
  |     </page>
  | 
  |     <page view-id="/page4.xhtml" action="#{controller.getFlow}">
  |         <navigation>
  |             <rule if-outcome="PF3">
  |                 <begin-conversation join="true" pageflow="PF3" />
  |             </rule>
  |         </navigation>
  |     </page>
  | 

Should I submit a feature request for a solution to this issue?

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4074020#4074020

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4074020
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to