hi nick, if you debug your (our) alternative form component you will see that the ValidationTracker mytracker is NOT null if you just refresh the page (breakpoint at getDefaultTracker). and contains the old values.
i suppose "flash" does not cleanup the objects correctly and leaves them in the session. or maybe there is some sideeffect with components and parameters... need more test public class Form extends org.apache.tapestry.corelib.components.Form { @Persist("flash") private ValidationTracker mytracker; @Override public ValidationTracker getDefaultTracker() { if(mytracker == null) mytracker = new ValidationTrackerImpl(); return mytracker; } g, kris Kristian Marinkovic <[EMAIL PROTECTED]> 16.10.2007 15:05 Bitte antworten an "Tapestry users" <users@tapestry.apache.org> An "Tapestry users" <users@tapestry.apache.org> Kopie Thema Re: T5: refreshing page when there is an error i experience the same form behaviour. when i do a ctrl+r on the page wih the error message displayed it wont disappear although the onValidate method is not called and the ValidationTracker has "flash" scope... i must admit i dont understand why this happens, i've to dig deeper..... maybe some more coffee!? ... but the message will disappear if you clean it on cleanupRender void cleanupRender() { form.clearErrors(); } g, kris Kristian Marinkovic <[EMAIL PROTECTED]> 16.10.2007 13:53 Bitte antworten an "Tapestry users" <users@tapestry.apache.org> An "Tapestry users" <users@tapestry.apache.org> Kopie Thema Re: T5: refreshing page when there is an error i'm using 5.0.6-SNAPSHOT and exprience some strange behaviour on properties with @Persist("flash"). if i hit ctrl+r (page reload) the properties are not set back properly and therefore their value remains. ... but i have to check whether this is an error on my side i'll report back when i finished my sample form and did some testing g, kris Nick Westgate <[EMAIL PROTECTED]> 16.10.2007 13:37 Bitte antworten an "Tapestry users" <users@tapestry.apache.org> An Tapestry users <users@tapestry.apache.org> Kopie Thema Re: T5: refreshing page when there is an error Hmm, I'm seeing the same thing, although I only have an old T5.0.5 project to play with at the moment. This will take some looking into. Kris are you getting this behaviour? Cheers, Nick. Angelo Chen wrote: > Hi Nick, > > refreshing without a submit was my original question, but after applying > clearErrors(), I meant form fields got cleared while the error was displayed > under onValidate(), anyway I have tried your approach (b), here is the > result: > > When I did : > public void onValidate() throws EncoderException { > _form.recordError("Email address invalid"); > 1. > It displays error, and if I quit the browser and re-open the page, error > is gone, good. when I switch to other page then come back to the original > page, error is gone, good. when I click 'refresh', error remains, why? > > 2. I let "t:validate="required,minlength=8" emits some errors into the same > form, then click 'refresh', those new errors got erased, but the error in #1 > remains, anyway to clear them totally? > > > > > > Nick Westgate wrote: >> You mean refreshing without a submit, right? So onValidate isn't >> called in that case - only when the form submits. You can clear >> the form errors in an event handler, but realistically this can >> become problematic ... >> >> It's likely that the behaviour you want can be provided by: >> >> (a) copying and changing Form - see (b) >> >> or >> >> (b) deriving from Form and flash persisting the ValidationTracker: >> >> package yourapp.tapestry.components; >> >> import org.apache.tapestry.ValidationTracker; >> import org.apache.tapestry.ValidationTrackerImpl; >> import org.apache.tapestry.annotations.Persist; >> >> public class Form extends org.apache.tapestry.corelib.components.Form >> { >> @Persist("flash") >> private ValidationTracker defaultTracker; >> >> @Override >> public ValidationTracker getDefaultTracker() >> { >> if (defaultTracker == null) >> defaultTracker = new ValidationTrackerImpl(); >> >> return defaultTracker; >> } >> >> @Override >> public void setDefaultTracker(ValidationTracker defaultTracker) >> { >> this.defaultTracker = defaultTracker; >> } >> } >> >> Cheers, >> Nick. >> >> >> Angelo Chen wrote: >>> Hi Howard, >>> >>> What is the right spot to use clearErrors()? I have code as follow: >>> public void onValidate() throws EncoderException { >>> _form.clearErrors(); >>> // more validates... >>> } >>> >>> if there is a previous error, it will be cleared, but if there is a new >>> error, all the fields are cleared as well, any hints? >>> >>> >>> Howard Lewis Ship wrote: >>>> Form has a clearErrors() method. >>>> >>>> On 10/15/07, Angelo Chen <[EMAIL PROTECTED]> wrote: >>>>> Hi, >>>>> >>>>> I notice that when an error is recorded thru recordError, refreshing >>>>> the >>>>> form will not erase the error messages unlike when form was rejected by >>>>> validator where pressing refresh in the browser can errase the errors >>>>> and >>>>> go >>>>> back to the initial form screen, here is the code >>>>> public void onValidate() throws EncoderException { >>>>> _form.recordError("test error"); >>>>> } >>>>> >>>>> if this error is shown in the form, it will be there forever even you >>>>> restart the browser, any hint? >>>>> A.C. >>>>> -- >>>>> View this message in context: >>>>> http://www.nabble.com/T5%3A-refreshing-page-when-there-is-an-error-tf4627982.html#a13214217 >>>>> Sent from the Tapestry - User mailing list archive at Nabble.com. >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>> >>>>> >>>> -- >>>> Howard M. Lewis Ship >>>> Partner and Senior Architect at Feature50 >>>> >>>> Creator Apache Tapestry and Apache HiveMind >>>> >>>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]