The model is very simple: all pages are completely separate, unless you pass information between them ;-) This can be done, as you suggested, through the session. The other way is through the XForms instance.
In general, if you go from page A to page B, no information is passed to page B through the instance, i.e. the XForms instance for page B is as defined in your XForms model for page B.
With XUpdate, in the controller, you can say that when going to page B from page A, the instance of page B must be updated with some information, which can be pretty much arbitrary since you have access at that point to the instance of page A, as well as to the result of the action, if any, performed on page A.
So to "pass the updated XForms instance from one page to another", you can use XUpdate in the controller. It is not page B accessing instance of page A, but rather your XUpdate code, in the controller, copying the instance of page A into the instance of page B.
I hope this is clearer.
-Erik
Peter Charles wrote:
Erik,
I am not sure that I understand you. I would like to pass the updated xform instance from one page to another. This is the xml 'instance' for page one accessed some how from page two.
For instance My second page's xform is an xpl file. Can I declare an input on the xform xpl that captures the 'instance' from the first page.
If this is not possible, how can I access page one's instance from page two's xform and or model?
What I am not getting is where (and how) in page two, I can access the instance from page one. Also must xupdate be called for the instance to be passed?
Thanks
Peter
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Erik Bruchez Sent: Tuesday, March 30, 2004 12:03 PM To: OXF Users Subject: Re: passing information between pages
Peter,
Using the session is in general not recommended, as that has some issues, so you are right to look for alternatives.
You can definitely pass information from instance to instance using XUpdate in the controller, for example:
<action when="/form/action = 'dothis'" action="oxf:/action/dothis.xpl">
<result when="/result-data">
<xu:append select="/form/data"><xu:copy-of select="document('#action')/result-data/*"/></xu:append>
</result>
</action>
The XUPdate code has access to document('#action') which is the document output by the action, as well as document('#instance') which is the instance of the initial page. The XUpdate code works on the newly constructed instance of the destination page.
Also, typically in the case of wizards, or multiple-page spanning data entry forms, you can use the approach of having a large instance progressively filled-out as the user navigates from page to page. This works well until you redirect to a page to another page, because redirects use GET, and OXF passes the instance on the URL in that case. If the instance is very large, this won't work because browsers have limitations on the size of URLs.
So with OXF 2.2, for large instances, you are stuck either using the session, or avoiding redirects (which also means avoiding <result page="..."> in the controller). OXF 2.5 solves this by providing a built-in way of passing large instances between pages.
-Erik
Peter Charles wrote:
> Hello, > > Is there any method other than using the session to pass information > between pages? > > For instance, have the updated xform from page one, be the sent as an > input to an xpl in page two. > > Thanks > > Peter
_______________________________________________ oxf-users mailing list [EMAIL PROTECTED] http://mail.orbeon.com/mailman/listinfo/oxf-users
_______________________________________________ oxf-users mailing list [EMAIL PROTECTED] http://mail.orbeon.com/mailman/listinfo/oxf-users
_______________________________________________ oxf-users mailing list [EMAIL PROTECTED] http://mail.orbeon.com/mailman/listinfo/oxf-users
