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]