Hi, The culprit appears to be the
form.showForm(ArrayAdmin); line It seems to loop *continously* on this line when I match on <map:match type="request-parameter" pattern="continuation-id"> <map:call continuation="{1}"/> </map:match> However, it does not loop if I use <map:match pattern="*.continue"> <map:call continuation="{1}"/> </map:match> though in the latter case I loose authentication capability. Is there any way around this? Use authentication, continuations and form.showForm together? thx! Paul rather than --- Paul Joseph <[EMAIL PROTECTED]> wrote: > Getting there, but not quite there yet...am getting > into a "loop" situation with the hidden > continuation. > > When I use the continuation as a hidden field in my > form template as shown below: > > <ft:form-template action="" method="POST"> > <ft:continuation-id/> > > and with my sitemap as below: > > <map:match pattern="*"> > <map:act type="auth-protect"> > <map:parameter name="handler" > value="simpleauthenticator"/> > > <map:match type="request-parameter" > pattern="continuation-id"> > <map:call continuation="{1}"/> > </map:match> > > <map:match pattern="arrayadmin-display-pipeline"> > <map:generate src="arrayadmin_template.xml"/> > <map:transform type="forms"/> > <map:transform > src="context://resources/resources/forms-arrayadmin-styling.xsl"/> > <map:serialize/> > </map:match> > > <map:match pattern="arrayAdmin"> > <map:call function="arrayAdmin"> > <map:parameter name="bindingURI" > value="arrayadmin_bind.xml"/> > </map:call> > </map:match> > > </map:act> > </map:match> > > it seems to go into a loop, till something times out > at which point, it shows a blank page (any changed > data *is* saved)... > > any ideas? > > My script is as follows and I suspect that the last > line in it keeps causing it to loop. What should the > last line be like to show the form again with the > new > (saved) values? > > function arrayAdmin() { > var bindingURI = > cocoon.parameters["bindingURI"]; > var form = new Form("arrayadmin.xml"); > var model = form.getModel(); > form.createBinding("arrayadmin_bind.xml"); > var beanClass = new > Packages.org.apache.cocoon.ojb.samples.bean.ArrayAdmin(); > var bean = dao.getObject(beanClass,"id",0); > form.load(bean); > form.showForm("arrayadmin-display-pipeline", > selectListData); > > // Let Cocoon Forms handle the form > if(form.submitId == "save") { > form.save(bean); > dao.setObject(bean); > form.showForm("arrayAdmin"); //this same function > } > cocoon.releaseComponent(factory); > } > > I susepct the form.showForm("arrayAdmin") is causing > it to loop, but strangely this used to work when the > sitemap was unprotected and I was using the explicit > continuation i.e. no hidden ft:continuation-id in > template and using an explicit *.continuation match > in > the sitemap. > > TIA! > Paul > > > > --- Jorg Heymans <[EMAIL PROTECTED]> wrote: > > > you would just do > > > > <ft:form-template action="" method="POST"> > > <ft:continuation-id/> > > <ft:widget id ="mywidget"/> > > ...... > > > > </ft:form> > > > > > > > > Paul Joseph wrote: > > > Jorg, > > > > > > thank you very much. > > > > > > I will try this approach - just wasn't sure how > to > > use > > > the <ft:continuation-id> tag in my template. > > > > > > Do I simpley do this anywhere reasonable in the > > > template: > > > > > > <ft:continuation-id><fi:styling > > > type="hidden"/></ft:continuation-id> > > > > > > -hopefully, this will be my last question, sorry > > for > > > the bother and thanks for the help so far. > > > > > > rgds > > > Paul > > > --- Jorg Heymans <[EMAIL PROTECTED]> wrote: > > > > > > > > >> > > >>Paul Joseph wrote: > > >> > > >>>1. So for this to work there is no need to use > > >>>encodeURL? I was under the impression that > > >> > > >>encodeURL > > >> > > >>>was needed as the auth framework created a > > session > > >>>behind the scenes. > > >> > > >>If the browser doesn't support cookies then the > > >>webapplication should > > >>rewrite or encode all URL's in the page to > attach > > >>the sessionID to it. > > >>If your browser allows cookies then there is no > > need > > >>for this. The > > >>auth-framework or cocoon itself creates the > > session > > >>transparently. > > >> > > >> > > >>>2. How are you matching the *.continue i.e. > > >>> > > >>>If I use > > >>><map:match type="request-parameter" > > >>>pattern="continuation-id"> instead of > > >>> > > >>><map:match pattern="*.continue"> > > >>>I get the following msg. > > >>> > > >>>org.apache.cocoon.ResourceNotFoundException: No > > >>>pipeline matched request: > > >>> > > >> > > > > > > webtask/array/3b3639336a20303b2b63112f7046410573643157.continue > > > > > >>This is because this matcher uses the hidden > input > > >>field i told you > > >>about earlier. Put <ft:continuation-id> in your > > >>form-template. You are > > >>seeing this error probably because your form > > action > > >>has still the > > >>continuation construct in it. Just set your form > > >>action to "". > > >> > > >><map:match type="request-parameter" > > >>pattern="continuation-id"> works > > >>just like a normal pipeline match, but acts on a > > >>requestparameter > > >>instead of an URL path. > > >> > > >> > > >>Regards > > >>Jorg > > >> > > >> > > >> > > > > > > > > > --------------------------------------------------------------------- > > > > > >>To unsubscribe, e-mail: > > >>[EMAIL PROTECTED] > > >>For additional commands, e-mail: > > >>[EMAIL PROTECTED] > > >> > > >> > === message truncated === --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]