-
1. Re: Get Request problems with Seam 2 CR1
smithbstl Sep 21, 2007 4:46 PM (in response to smithbstl)Ok, let me bump this with a rephrased question.
What is the proper way to output a GET link when a page is called via a pageflow?<pageflow-definition name="serviceRequestCreation> ... <page name="serviceRequestListing" view-id="/addressrequestlisting.xhtml" back="enabled"> <transition name="viewServiceRequest" to="serviceRequest"> <action expression="#{addressLocator.selectServiceRequest}"/> </transition> </page> <page name="serviceRequest" view-id="/servicerequest.xhtml" back="enabled"> <redirect/> </page> .... </pageflow-definition>
<page view-id="/servicerequest.xhtml"> <param name="serviceRequestId" value="#{serviceRequestManager.serviceRequestId}" converterId="javax.faces.Long"/> <begin-conversation join="true" pageflow="serviceRequestCreation"/> <action execute="#{serviceRequestManager.loadServiceRequest(serviceRequestManager.serviceRequestId)}"/> </page>
What am I missing?
Using an s:link to call "viewServiceRequest" does allow the request parameter to propagate across the redirect. If I don't use a redirect then the link points to the calling page which is not what I want either.
When pasting the link into the browser from outside of the pageflow, it works as expected. -
2. Re: Get Request problems with Seam 2 CR1
pmuir Sep 22, 2007 7:06 AM (in response to smithbstl)"smithbstl" wrote:
I am having some trouble since converting from Seam 2 Beta to CR1 with a Get Request in combination with a pageflow
When I use an s:link to navigate to a page
Here is what was working<s:link view="/servicerequest.xhtml" value="#{req.serviceRequestNumber}"> <f:param name="serviceRequestId" value="#{req.serviceRequestId}" /> </s:link>
<page view-id="/servicerequest.xhtml"> <param name="serviceRequestId" value="#{serviceRequestManager.serviceRequestId}" converterId="javax.faces.Long"/> <begin-conversation join="true"/> <action execute="#{serviceRequestManager.loadServiceRequest(serviceRequestManager.serviceRequestId)}"/> </page>
When I click the s:link I get an error message passed into facesMessages "Illegal Navigation"
This looks like regression to me. What libraries are you using with your project? RichfFaces?I changed the s:link to use a pageflow instead
You mean a logical outcome right? -
3. Re: Get Request problems with Seam 2 CR1
smithbstl Sep 22, 2007 8:22 AM (in response to smithbstl)Yes, I am using Richfaces 3.1
Yes, the s:link is pointing to a transition in a pageflow<s:link view="viewServiceRequest" value="#{req.serviceRequestNumber}"> <f:param name="serviceRequestId" value="#{req.serviceRequestId}" /> </s:link>
<page name="serviceRequestListing" view-id="/addressrequestlisting.xhtml" back="enabled"> <transition name="viewServiceRequest" to="serviceRequest"> <action expression="#{addressLocator.selectServiceRequest}"/> </transition> </page>
-
4. Re: Get Request problems with Seam 2 CR1
pmuir Sep 22, 2007 9:02 AM (in response to smithbstl)Have you read http://www.jboss.com/index.html?module=bb&op=viewtopic&t=119400 (Sorry, I forgot to post about this earlier).
AFAICS the page action should be called even when in a pageflow. I will try to dig into it if you are having problems. -
5. Re: Get Request problems with Seam 2 CR1
smithbstl Sep 22, 2007 1:03 PM (in response to smithbstl)Yeah, I saw that. I will give it another go later today. I may also upgrade to RF 3.1.1 snapshot to see if that helps at all.
otherwise I may just have to re-engineer to not use pageflows at all.
Thanks again Pete -
6. Re: Get Request problems with Seam 2 CR1
smithbstl Sep 24, 2007 11:18 AM (in response to smithbstl)Pete, I'm still having problems. Everything works when I remove the redirect/ from my transition.
Basically what I want to happen is....
I have a search page called addresslookup.xhtml. This forwards to addressrequestlisting.xhtml which then should redirect to servicerequest.xhtml with the desired parameter supplied like shown in my previous post. This is handled via pages.xml
Here is my pageflow file<pageflow-definition xmlns="http://jboss.com/products/seam/pageflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://jboss.com/products/seam/pageflow http://jboss.com/products/seam/pageflow-2.0.xsd" name="serviceRequestCreation"> <start-page name="addressSearch" view-id="/addresslookup.xhtml"> <transition name="viewServiceRequests" to="serviceRequestListing"> <action expression="#{addressLocator.viewServiceRequests}"/> </transition> <page name="serviceRequestListing" view-id="/addressrequestlisting.xhtml" back="enabled"> <transition name="viewServiceRequest" to="serviceRequest"/> </page> <page name="serviceRequest" view-id="/servicerequest.xhtml" back="enabled"> <redirect/> <transition name="viewAssignments" to="assignmentListing"/> </page> </pageflow-definition>
Here is pages.xml<page view-id="/servicerequest.xhtml"> <param name="serviceRequestId" value="#{serviceRequestManager.serviceRequestId}" converterId="javax.faces.Long"/> <begin-conversation join="true" pageflow="serviceRequestCreation"/> <action execute="#{serviceRequestManager.loadServiceRequest(serviceRequestManager.serviceRequestId)}"/> </page>
Here is the link in question (req is a var defined in a dataTable). This datatable is also part of facelet hierarchy supplied to addressrequestlisting.xhtml via a ui:include. The value of the datatable is also supplied via ui:param. This may be pertinent based on this http://www.jboss.com/index.html?module=bb&op=viewtopic&t=117233 but I think its not related.<s:link action="viewServiceRequest" value="#{req.serviceRequestNumber}"> <f:param name="serviceRequestId" value="#{req.serviceRequestId}" /> </s:link>
When this link is clicked the parameters are NOT showing up in the resulting page's (servicerequest.xhtml) address bar. Only the conversationId (cid) is propagated.
When I remove the redirect from the pageflow<page name="serviceRequest" view-id="/servicerequest.xhtml" back="enabled"> <transition name="viewAssignments" to="assignmentListing"/> </page>
and change the view defined in pages.xml to this<page view-id="/addressrequestlisting.xhtml"> <param name="serviceRequestId" value="#{serviceRequestManager.serviceRequestId}" converterId="javax.faces.Long"/> <begin-conversation join="true" pageflow="serviceRequestCreation"/> <action execute="#{serviceRequestManager.loadServiceRequest(serviceRequestManager.serviceRequestId)}"/> </page>
everything works as expected. The only difference is I am use a forward instead of a redirect.
I am using Seam 2 CR1 with the latest RichFaces snapshots (9-23-2007)
Thanks again. -
7. Re: Get Request problems with Seam 2 CR1
smithbstl Sep 24, 2007 12:38 PM (in response to smithbstl)Ok, I have it working now but a few things seem rather odd about what I am doing and why it is working.
I changed pages.xml to this<page view-id="/servicerequest.xhtml"> <param name="serviceRequestId" value="#{serviceRequestManager.serviceRequestId}" converterId="javax.faces.Long"/> <begin-conversation join="true" pageflow="serviceRequestCreation"/> </page> <page view-id="/addressrequestlisting.xhtml"> <param name="serviceRequestId" value="#{serviceRequestManager.serviceRequestId}" converterId="javax.faces.Long"/> <begin-conversation join="true" pageflow="serviceRequestCreation"/> <action execute="#{serviceRequestManager.loadServiceRequest(serviceRequestManager.serviceRequestId)}"/> </page>
And added the redirect back into the pageflow<page name="serviceRequestListing" view-id="/addressrequestlisting.xhtml" back="enabled"> <transition name="viewServiceRequest" to="serviceRequest"/> </page> <page name="serviceRequest" view-id="/servicerequest.xhtml" back="enabled"> <redirect/> <transition name="viewAssignments" to="assignmentListing"/> </page>
Now a few things strike me as odd
1. When I hover the mouse over this link<s:link action="viewServiceRequest" value="#{req.serviceRequestNumber}"> <f:param name="serviceRequestId" value="#{req.serviceRequestId}" /> </s:link>
the browser is displaying
http://localhost:8080/srms/addressrequestlisting.seam?serviceRequestId=1&dataModelSelection=&actionOutcome=viewServiceRequest&cid=5
in the status bar instead of http://localhost:8080/srms/servicerequest.seam......
since that is where the pageflow is pointing.
2. When I go directly to
http://localhost:8080/srms/servicerequest.seam?serviceRequestId=1
#{serviceRequestManager.loadServiceRequest(serviceRequestId)} is called eventhough I have removed the action it was defined in from pages.xml where servicerequest.xhml is defined. I have no idea how Seam knows to call this method especially since its NOT annotated using @Factory or @Create
It seems there is some magic going on somewhere that I can't seem to lay a handle on. -
8. Re: Get Request problems with Seam 2 CR1
pmuir Oct 27, 2007 6:44 AM (in response to smithbstl)Do you still have issues here?