Bastian Voigt wrote: > On Tuesday 12 December 2006 13:36, Andreas Andreou wrote: > > >>>> I have noticed that the PageValidationListener for the old page is >>>> always called when submitting a form, even when the form submission >>>> listener redirects to a different page. Sometimes this failed in my >>>> project. >>>> >> Why exactly does it fail? >> > > It fails because the form does not include some parameters which are required > for the page. The page validation listener throws a redirect exception when > these parameters are not set. > > Let me further explain what I am doing -> > Some pages in my application are area dependent, i.e. a parameter area is > required for accessing these pages. I need the area as a real parameter in > the URL, because I use a FriendlyURL filter to make URLs like > mysite.com/hamburg/index.html, mysite.com/london/index.html etc. > That's why I do not persist the area. > > Now when I use a form on one of my area pages which redirects to a non-area > dependent page, then I do not include the area name as part of the form. In > these cases my PageValidation listener jumps in and redirects me to an error > page. >
Since the form is in an 'area page' and tapestry's submits trigger the same page (i.e. the listeners are found on the current page) it's only normal that the validation listener will complain... Can't you include the current area as a hidden form field, so that it gets submitted and your validation listener gets satisfied? This, (though I dislike it) could also work: http://mail-archives.apache.org/mod_mbox/jakarta-tapestry-user/200512.mbox/[EMAIL PROTECTED] > > > >> Well, tapestry doesn't really know that you're to do a RAP. And even if >> it did, >> the PageValidationListener should still be called - perhaps the user >> doesn't have permission >> to submit the form - how would you capture this? >> > > But I cannot capture this with the PageValidationListener either, because it > does not tell me whether a form was submitted or just the page was accessed > normally. > Can't you try cycle.getParameter or something? > > >> And anyway, this is standard documented behavior of page and direct >> services. >> Howard's "Tapestry in Actions" contains several sequence diagrams that >> explain the >> process, i.e. when PageValidationListeners and PageBeginRenderListeners >> are called >> > > Then it's perhaps a wording issue. The name "PageBeginRenderListener" implies > to me that it is called when a page is to be rendered. But in case of RAP, no > page is going to be rendered after the first request. > > > >> Why exactly don't they work? Are you persisting them somehow? >> You have to keep in mind that a RAP actually does a 2nd request , which >> means >> that unless you persist stuff, they're going to be gone after the 1st >> submit. >> > > Yes, I am using the @Persist("session") annotation. Adding validators to the > form text fields simply has no effect. The values are always accepted. > > > >> That's where the tapestry-flash can help - so that you get minimum >> session usage. >> > > Yes, I am using that for rendering some error messages, so that they > disappear > after the next action. > > > -- Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr Tapestry / Tacos developer Open Source / J2EE Consulting --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]