Great!!!!! It works!!! Davor many many thanks ! :clap: I've created an interface ITestInterface at it.sailingweb.framework.web level with the getTf() method, that my component SailingInput now implements, and now everything works fine!
I can not understand exactly why my embedded TextField don't initialize its own validator, but the workaround is now correct! My last (hope) dilemma,if you could give me another hint, on the t5 classes management, is what I've posted some days ago, here http://www.nabble.com/t5-persist-pageLoaded-instance-variable-initialization-td14838208.html#a14838208 that's about the reasons why if I initialize some instance variable on the pageLoaded event, the next time I load the same page from the pool I find them already initialized without any @Persist @Retain annotation use. The detached activities shout restore any instance variable to its default value... Thank you very mutch. -Rick Davor Hrg wrote: > > I'm still unsure why it happens, > > can you try following: > > etract an interface with method getTf(); > na put it outside components package > for example: > it.sailingweb.framework.web.InputWrapper > > > Tapestry instruments classes in components,base,pages packages, > and holds them in a separate ClassLoader... and problems like > this can happen pretty easily... > > Davor Hrg > > On Jan 23, 2008 1:33 PM, riccaruf <[EMAIL PROTECTED]> > wrote: >> >> Hi Davor, >> we are developing an application with our own component, >> and we are trying to validate a textfield like embedded component of our >> component. >> >> Our own component is like that >> >> Sample.tml >> >> <input t:type="template/componenti/componentigenerici/SailingInput" >> t:inputType="text" >> t:value="value" >> t:inputLabelText="Testo" >> t:validator="sailingDataValidator" >> /> >> >> In SailingInput.tml a simple tamplate like that >> >> <div xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> >> <t:if test="textType"> >> >> <t:label for="inputText1" /> >> >> <input t:type="textfield" >> t:value="prop:value" >> t:label="prop:labelText" >> t:validate="prop:validator" >> t:id="inputText1"/> >> </t:if> >> >> </div> >> >> and in our component class SailingInput.java >> >> public class SailingInput extends AbstractField{ >> ... >> >> @Parameter(required = false,defaultPrefix="validate",name="validator") >> private FieldValidator validator; >> >> ... >> } >> >> To obtain a FieldValidator in correct way I'd like tapestry do it for me, >> so I'd like to use the validate defaultPrefix for my container component >> parameter. >> This means I have to extends AbstractField class that it is not strictly >> necessary. >> >> In that way I could manage an instance of FieldValidator and bind it to >> my >> embedded textfield component. >> >> But there is something strange that take me to try a workaround that make >> me >> have the class clast of the post subject.(May be I miss something..) >> The validator call the render method for my container component field >> SailingInput BUT NOT for the contained component InputText, in that way >> the >> server side validation works fine but not the client side because js find >> a >> null field and broke! >> So I've 2 kind of questions: >> 1) why input text render method has not been called? >> >> 2)My ugly workaround (Yes I know ;) is the origin of this post: >> >> If the framework calls the render method of the validator only for my >> container component, >> I've tried to retrieve my contained component field element in the way I >> show >> >> >> public void render(Field field, Void constraintValue, MessageFormatter >> formatter, MarkupWriter writer, >> FormSupport formSupport) { >> >> System.out.println("### field:"+field); >> Field inputField=field; >> >> if (field instanceof SailingInput){ >> SailingInput si=(SailingInput)field; >> inputField=si.getTf(); >> } >> >> formSupport.addValidation(inputField, "test", >> buildMessage(formatter, >> field), null); >> } >> >> And here we have the classcast exception. >> >> the packages are >> >> validator: >> it.sailingweb.framework.web.components.utility.validators; >> >> component: >> it.sailingweb.framework.web.components.template.componenti.componentigenerici >> >> pages: >> it.sailingweb.framework.web.pages >> >> >> hope to be clear. >> >> thanks for answer! >> >> -Rick >> >> >> >> >> >> >> >> Davor Hrg wrote: >> > >> > Class cast exceptions happen >> > if you have non component classes inside components or pages >> packages... >> > >> > post some code and say what packages are those classes in... >> > >> > Davor Hrg >> > >> > On Jan 23, 2008 10:12 AM, riccaruf >> > <[EMAIL PROTECTED]> wrote: >> >> >> >> Hi Dave thank you very mutch for your reply!! Oops..what I dummy I am! >> I >> >> miss >> >> something in the post preview :-(( , and >> >> Yes yes my test was exactly in the way you write.... >> >> >> >> if (field instanceof MyInput).... >> >> >> >> But it doesn't work! >> >> >> >> The log messages show me that the instance tapestry pass me as >> parameter >> >> is of my class but it seems not recognize it. Seems that the "instance >> >> of" >> >> can't work in the right way! >> >> Is t5 class loader different in anything from the other? >> >> Is because we can not instance directly a component so we can not >> access >> >> in >> >> any way >> >> to its class ? >> >> >> >> I've triyed also the downcast but obvously a class cast explode on my >> >> monitor ;). >> >> >> >> Please tell me what should happen... I can not understand. >> >> >> >> cheers >> >> >> >> -Rick >> >> >> >> >> >> >> >> >> >> Dave.Derry wrote: >> >> > >> >> > I think your test is wrong. Don't you want >> >> > >> >> > if (field instanceof MyInput){ >> >> > ? >> >> > >> >> > Dave >> >> > >> >> > We must begin not just to act, but to think, for there is no better >> >> slave >> >> > than the one who believes his slavery to be freedom, and we are in >> >> > no greater peril than when we cannot see the chains on our minds >> >> > because there are yet no chains on our feet. >> >> > -- Michael Reid >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > riccaruf >> >> > <riccardo.ruffill >> >> > [EMAIL PROTECTED] >> >> To >> >> > .com> users@tapestry.apache.org >> >> > >> >> cc >> >> > 01/22/2008 12:09 >> >> > PM >> >> Subject >> >> > t5 class cast >> >> > >> >> > Please respond to >> >> > "Tapestry users" >> >> > <[EMAIL PROTECTED] >> >> > pache.org> >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > Hi everybody, I've got this kind of method in my validator class >> >> > >> >> > public void render(Field field, Void constraintValue, >> >> MessageFormatter >> >> > formatter, MarkupWriter writer, >> >> > FormSupport formSupport) { >> >> > >> >> > System.out.println("### field:"+field); >> >> > Field inputField=field; >> >> > if (field instanceof SailingInput){ >> >> > MyInput si=(MyInput)field; >> >> > inputField=si.get(); >> >> > } >> >> > formSupport.addValidation(inputField, >> "test", >> >> > buildMessage(formatter, >> >> > field), null); >> >> > } >> >> > >> >> > this is the output >> >> > >> >> > ### field:[EMAIL PROTECTED] >> >> > but the cast has never done. >> >> > Any ideas ? >> >> > >> >> > thanks in advance. >> >> > >> >> > -Rick >> >> > >> >> > -- >> >> > View this message in context: >> >> > http://www.nabble.com/t5-class-cast-tp15023351p15023351.html >> >> > Sent from the Tapestry - User mailing list archive at Nabble.com. >> >> > >> >> > >> >> > >> --------------------------------------------------------------------- >> >> > 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] >> >> > >> >> > >> >> > >> >> >> >> -- >> >> View this message in context: >> >> http://www.nabble.com/t5-class-cast-tp15023351p15037536.html >> >> >> >> Sent from the Tapestry - User mailing list archive at Nabble.com. >> >> >> >> >> >> --------------------------------------------------------------------- >> >> 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] >> > >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/t5-class-cast-tp15023351p15040746.html >> >> Sent from the Tapestry - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> 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] > > > -- View this message in context: http://www.nabble.com/t5-class-cast-tp15023351p15042356.html Sent from the Tapestry - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]