It works on my side. I created unit tests and I think they are ok. I enabled logging for the package and it doesn't happen. I tested the formInput example and it works without changes. Did you update AbstractValidator as well?
Juergen On 11/7/05, Sven Meier <[EMAIL PROTECTED]> wrote: > Hello Juergen, > > maybe it shouldn't - but currently it does ;). > > I debugged the new algorithm of ComponentStringResourceLoader today. As > I already suspected, the id of the validated component is duplicated in > the prefixKey, since both DefaultValidatorResourceKeyFactory and > > ComponentStringResourceLoader are now prepending the same id. > > Example: > APage > -> XPanel "x" > -> RequiredTextField "y" > Now the string resources will be searched in the following order: > APage.properties: > x.y.y.RequiredValidator > y.RequiredValidator > XPanel.properties > y.y.RequiredValidator > y.RequiredValidator > > Obviously "x.y.y.RequiredValidator" and "y.y.RequiredValidator" are the > wrong prefixKeys to look up. > > Sven > > Juergen Donnerstag wrote: > > >It shouldn't. I guess the important point is that > >ComponentStringResourceLoade does not get the FormComponent (text1) > >You don't start looking for text1 in the formComponents properties > >file, do you? You start with the parent component containing text1. A > >key text1 expresses that text1 is a child of the parent. > > > >Juergen > > > >On 11/5/05, Sven Meier <[EMAIL PROTECTED]> wrote: > > > > > >>Hello Juergen, > >> > >>I've taken a short look on your code in the CVS : > >> > >>DefaultValidatorResourceKeyFactory.java: > >> > >>* public* String newKey(IValidator validator, FormComponent formComponent) > >> { > >>* return* formComponent.getId() + *"."* + > >>Classes.name(validator.getClass()); > >> } > >> > >>ComponentStringResourceLoader.java: > >> ... > >> /// Build search stack > >>/ Stack searchStack = *new* Stack(); > >> searchStack.push(component); > >> String prefixKey = component.getId() + *"."* + key; > >> > >>I'm wondering if this leads to a duplicated ID of the validated > >>component in prefixId? e.g. > >> > >> form1.text1.text1.RequiredValidator > >> > >>But maybe I'm wrong - so I'll better give it a try on Monday. > >> > >>Thanks > >> > >>Sven > >> > >>Juergen Donnerstag wrote: > >> > >> > >> > >>>Repetition: Message retrieval for the following scenario - > >>>form->panel->textfield - is currently not supported > >>> > >>>Let's say that we have the following component hierarchy: > >>>APage > >>>->BForm id="b" > >>>-->XPanel id="x" > >>> ---->RequiredTextField id="foo" > >>>-->YPanel id="y" > >>> ---->RequiredTextField id="foo" > >>> > >>>Sven made a suggestion on how to change which is not 100% compliant. I > >>>worked a bit on it and I think I found a solution. An example: > >>> > >>>The Page looks like > >>> add(new Label("label")); > >>> > >>> Form form1 = new Form("form1"); > >>> add(form1); > >>> form1.add(new MyTextField("text1", "input-1")); > >>> form1.add(new MyTextField("text2", "input-2")); > >>> > >>> Form form2 = new Form("form2"); > >>> add(form2); > >>> > >>> Panel panel1 = new Panel("panel1"); > >>> form2.add(panel1); > >>> panel1.add(new MyTextField("text3", "input-3")); > >>> panel1.add(new MyTextField("text4", "input-4")); > >>> > >>> Panel panel2 = new Panel("panel2"); > >>> form2.add(panel2); > >>> panel2.add(new MyTextField("text5", "input-5")); > >>> panel2.add(new MyTextField("text6", "input-6")); > >>> > >>>And the properties file: > >>> > >>># Default message > >>>RequiredValidator = Default message: ${label} required > >>> > >>># A Textfield with label > >>>form1.text1 = text1label > >>>form1.text1.RequiredValidator = ${label} is required > >>> > >>># A TextField without label. label should default to the formComponent's id > >>>form1.text2.RequiredValidator = ${label} is required > >>> > >>># This one is wrong. Because the panel id is missing > >>>form2.text3.RequiredValidator = wrong: text3333 is missing > >>> > >>># Must be like > >>>form2.panel1.text3.RequiredValidator = ok: text3333 is missing > >>> > >>>form2.panel1.text4 = Text4Label > >>>form2.panel1.text4.RequiredValidator = ok: ${label} is missing > >>> > >>>form2.panel2.text5.RequiredValidator = ok: text555 is missing > >>>#form2.panel2.text6.RequiredValidator = ok: text555 is missing > >>> > >>>form2.text5.RequiredValidator = wrong: text555 is missing > >>>form2.text6.RequiredValidator = wrong: text555 is missing > >>> > >>>form2.panel1.text5.RequiredValidator = wrong: text555 is missing > >>>form2.panel1.text6.RequiredValidator = wrong: text555 is missing > >>> > >>>I think it is 100% compliant now, solves the panel problem and as > >>>suggested by Sven adds one more (IMO useful) feature; useful for > >>>self-contained, re-usable components. The key (e.g. > >>>text6.RequiredValidator) is prepended with the relativ path (virtual > >>>root component is the component associated with the properties files). > >>>His english is better than mine and his examples probably as well. > >>> > >>>I'll check it in tonight. > >>> > >>>Juergen > >>> > >>> > >>> > >>>On 10/29/05, Sven Meier <[EMAIL PROTECTED]> wrote: > >>> > >>> > >>> > >>> > >>>>I've opened a bug, see: > >>>> > >>>>http://sourceforge.net/tracker/index.php?func=detail&aid=1339904&group_id=119783&atid=684975 > >>>> > >>>>Sven > >>>> > >>>>Juergen Donnerstag wrote: > >>>> > >>>> > >>>> > >>>> > >>>> > >>>>>Did you open a bug or RFE already? If not, please do so, otherwise > >>>>>there is always a risk that it'll be forgotten. > >>>>> > >>>>>Juergen > >>>>> > >>>>>On 10/27/05, Martijn Dashorst <[EMAIL PROTECTED]> wrote: > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>>>+1, if it doesn't break stuff. > >>>>>> > >>>>>>Martijn > >>>>>> > >>>>>> > >>>>>>On 10/27/05, Juergen Donnerstag <[EMAIL PROTECTED]> wrote: > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>Would you please open a bug for it. Thanks. > >>>>>>> > >>>>>>>As long as long as no one else on the list is against fixing it that > >>>>>>>way, I'll try and put it into 1.1. > >>>>>>> > >>>>>>>Juergen > >>>>>>> > >>>>>>>On 10/27/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>Looks to me you are right. We didn't think about a Panel being a > >>>>>>>>>child > >>>>>>>>>of a Form. I guess it was our assumption that FormComponents are > >>>>>>>>>always a direct child of a Form. > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>Nested panels inside the same form was the first thing I checked when > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>evaluating Wicket. It's a very handy solution to break large forms into > >>>>>>logical units. > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>I'm currently not able to look into the code. Do we traverse up the > >>>>>>>>>component tree already, like you do? > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>Yes, code is taken from the current ComponentStringResourceLoader > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>(sorry, I erroneously referred to > >>>>>>DefaultComponentStringResourceLoader). I only introduced > >>>>>>the variable 'hierarchicalKey'. > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>Isn't there a risk that due to equal ids, users get messages which > >>>>>>>>>were not meant to be for that component. > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>Well, Wicket ensures that a path of a component is always unambiguous, > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>so > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>it works the same way as the name attributes are generated for HTML > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>input fields. > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>With my solution every component developer has full control over its > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>messages in its own scope. In the following example each panel doesn't > >>>>>>know > >>>>>>anything about its parents, but each parent is able to override the > >>>>>>default > >>>>>>message of its child: > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>- Panel1.jave has Textfield 'foo' > >>>>>>>>- Panel1.properties contains 'foo.RequiredValidator=Foo is required' > >>>>>>>> > >>>>>>>>- Panel2.java uses Panel1.java as 'panel1' > >>>>>>>>- Panel2.properties contains > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>'panel1.foo.RequiredValidator=Foo 1 is required' > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>- Page3.java uses Panel2.java as 'panel2' in a form 'form' > >>>>>>>>- Page3.properties contains > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>'form.panel2.panel1.foo=Regretfully Foo 1 is required' > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>The developer of Page3 is able to override explicitly the message for > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>'foo' in Panel1.java. > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>Sven > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>>>On 10/26/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>Hello, > >>>>>>>>>> > >>>>>>>>>>I'm struggling with the way Wicket loads String resources, > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>particularly how > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>DefaultComponentStringResourceLoader loads validation > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>messages. > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>>Let's say that we have the following component hierarchy: > >>>>>>>>>>APage > >>>>>>>>>>->BForm id="b" > >>>>>>>>>>-->XPanel id="x" > >>>>>>>>>> ---->RequiredTextField id="foo" > >>>>>>>>>>-->YPanel id="y" > >>>>>>>>>> ---->RequiredTextField id="foo" > >>>>>>>>>> > >>>>>>>>>>XPanel knows nothing about its containing form or page, nevertheless > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>XPanel's validation keys must be prefexed with the form's id: > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>XPanel.properties : > >>>>>>>>>> b.foo.RequiredValidator = Foo is required. > >>>>>>>>>> > >>>>>>>>>>IMHO this introduces an unwanted dependency of XPanel on its > >>>>>>>>>>parental > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>form > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>(i.e. id="b"). > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>Furthermore there is no way to override the foo messages separately > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>for > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>XPanel and YPanel: > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>APage.properties: > >>>>>>>>>> b.foo.RequiredValidator = Foo is required in x ?? > >>>>>>>>>> b.foo.RequiredValidator = Foo is required in y ?? > >>>>>>>>>> > >>>>>>>>>>Now I would prefer, that the validation text for XPanel's foo would > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>be > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>searched like in the following: > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>APage.properties: > >>>>>>>>>> b.x.foo.RequiredValidator = Foo is extremely required. > >>>>>>>>>>XPanel.properties: > >>>>>>>>>> foo.RequiredValidator = Foo is required. > >>>>>>>>>> > >>>>>>>>>>YPanel's validation text could stay unaltered: > >>>>>>>>>> > >>>>>>>>>>YPanel.properties: > >>>>>>>>>> foo.RequiredValidator = Foo is required. > >>>>>>>>>> > >>>>>>>>>>Fortunately Wicket is pluggable enough to set this straight: > >>>>>>>>>>I've written my own ValidatorResourceKeyFactory, that omits the > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>form's id > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>from the key: > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>>>>public String newKey(IValidator validator, FormComponent component) > >>>>>>>>>>{ > >>>>>>>>>> return component.getId() + "." + > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>Classes.name(validator.getClass()); > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>>} > >>>>>>>>>> > >>>>>>>>>>With a custom ComponentStringResourceLoader the key to lookup a > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>message is > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>always prefixed with the ids of the parental components: > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>// Build search stack > >>>>>>>>>>Stack searchStack = new Stack(); > >>>>>>>>>>searchStack.push(component); > >>>>>>>>>> > >>>>>>>>>>String hierarchicalKey = key; > >>>>>>>>>>if (!(component instanceof Page)) > >>>>>>>>>>{ > >>>>>>>>>> MarkupContainer c = component.getParent(); > >>>>>>>>>> while (true) > >>>>>>>>>> { > >>>>>>>>>> searchStack.push(c); > >>>>>>>>>> if (c instanceof Page) > >>>>>>>>>> break; > >>>>>>>>>> hierarchicalKey = c.getId() + "." + hierarchicalKey; > >>>>>>>>>> c = c.getParent(); > >>>>>>>>>> } > >>>>>>>>>>} > >>>>>>>>>> > >>>>>>>>>>// Iterate through search stack > >>>>>>>>>>String value = null; > >>>>>>>>>>while (!searchStack.isEmpty()) > >>>>>>>>>>{ > >>>>>>>>>> Component c = (Component)searchStack.pop(); > >>>>>>>>>> Class cc = c.getClass(); > >>>>>>>>>> > >>>>>>>>>> while ( value == null ) { > >>>>>>>>>> // Locate previously loaded resources from the cache > >>>>>>>>>> final String id = createCacheId(cc, style, locale); > >>>>>>>>>> ValueMap strings = > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>(ValueMap)resourceCache.get(id); > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>> if (strings == null) > >>>>>>>>>> { > >>>>>>>>>> // No resources previously loaded, attempt to load them > >>>>>>>>>> strings = loadResources(c, cc, style, locale, id); > >>>>>>>>>> } > >>>>>>>>>> > >>>>>>>>>> // Lookup value > >>>>>>>>>> value = strings.getString(hierarchicalKey); > >>>>>>>>>> if (value != null) > >>>>>>>>>> break; > >>>>>>>>>> > >>>>>>>>>> // Move to next superclass > >>>>>>>>>> cc = cc.getSuperclass(); > >>>>>>>>>> if (isStopResourceSearch(cc)) break; > >>>>>>>>>> } > >>>>>>>>>> if (value != null) { > >>>>>>>>>> break; > >>>>>>>>>> } else { > >>>>>>>>>> hierarchicalKey = > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>hierarchicalKey.substring(hierarchicalKey.indexOf ('.') + 1); > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>> } > >>>>>>>>>>} > >>>>>>>>>> > >>>>>>>>>>// Return the resource value (may be null if resource was not found) > >>>>>>>>>>return value; > >>>>>>>>>> > >>>>>>>>>>Works great :). > >>>>>>>>>> > >>>>>>>>>>Now I really wonder who would want to use the > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>DefaultComponentStringResourceLoader at all? I don't > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>think that its way of > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>loading resources is useful, since it will introduce dependencies and > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>sooner > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>or later you'll run into name clashes. IMHO this severely hinders > >>>>>>>>>reuse > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>of > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>components inside of forms. > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>Note that my solution also works nicely with localization of other > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>components, e.g. the RadioChoice (line 393). > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>Thanks > >>>>>>>>>> > >>>>>>>>>>Sven > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>------------------------------------------------------- > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>>This SF.Net email is sponsored by the JBoss Inc. > >>>>>>>>>>Get Certified Today * Register for a JBoss Training Course > >>>>>>>>>>Free Certification Exam for All Training Attendees Through End of > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>2005 > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>>Visit http://www.jboss.com/services/certification > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>for more information > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>>_______________________________________________ > >>>>>>>>>>Wicket-user mailing list > >>>>>>>>>>Wicket-user@lists.sourceforge.net > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>https://lists.sourceforge.net/lists/listinfo/wicket-user > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>------------------------------------------------------- > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>This SF.Net email is sponsored by the JBoss Inc. > >>>>>>>>>Get Certified Today * Register for a JBoss Training Course > >>>>>>>>>Free Certification Exam for All Training Attendees Through End of > >>>>>>>>>2005 > >>>>>>>>>Visit http://www.jboss.com/services/certification for > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>more information > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>>_______________________________________________ > >>>>>>>>>Wicket-user mailing list > >>>>>>>>>Wicket-user@lists.sourceforge.net > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>https://lists.sourceforge.net/lists/listinfo/wicket-user > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>------------------------------------------------------- > >>>>>>>>This SF.Net email is sponsored by the JBoss Inc. > >>>>>>>>Get Certified Today * Register for a JBoss Training Course > >>>>>>>>Free Certification Exam for All Training Attendees Through End of 2005 > >>>>>>>>Visit http://www.jboss.com/services/certification for > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>more information > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>>_______________________________________________ > >>>>>>>>Wicket-user mailing list > >>>>>>>>Wicket-user@lists.sourceforge.net > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>https://lists.sourceforge.net/lists/listinfo/wicket-user > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>------------------------------------------------------- > >>>>>>>This SF.Net email is sponsored by the JBoss Inc. > >>>>>>>Get Certified Today * Register for a JBoss Training Course > >>>>>>>Free Certification Exam for All Training Attendees Through End of 2005 > >>>>>>>Visit http://www.jboss.com/services/certification for > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>more information > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>_______________________________________________ > >>>>>>>Wicket-user mailing list > >>>>>>>Wicket-user@lists.sourceforge.net > >>>>>>>https://lists.sourceforge.net/lists/listinfo/wicket-user > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>>>------------------------------------------------------- > >>>>>This SF.Net email is sponsored by the JBoss Inc. > >>>>>Get Certified Today * Register for a JBoss Training Course > >>>>>Free Certification Exam for All Training Attendees Through End of 2005 > >>>>>Visit http://www.jboss.com/services/certification for more information > >>>>>_______________________________________________ > >>>>>Wicket-user mailing list > >>>>>Wicket-user@lists.sourceforge.net > >>>>>https://lists.sourceforge.net/lists/listinfo/wicket-user > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>------------------------------------------------------- > >>>>This SF.Net email is sponsored by the JBoss Inc. > >>>>Get Certified Today * Register for a JBoss Training Course > >>>>Free Certification Exam for All Training Attendees Through End of 2005 > >>>>Visit http://www.jboss.com/services/certification for more information > >>>>_______________________________________________ > >>>>Wicket-user mailing list > >>>>Wicket-user@lists.sourceforge.net > >>>>https://lists.sourceforge.net/lists/listinfo/wicket-user > >>>> > >>>> > >>>> > >>>> > >>>> > >>>------------------------------------------------------- > >>>SF.Net email is sponsored by: > >>>Tame your development challenges with Apache's Geronimo App Server. > >>>Download > >>>it for free - -and be entered to win a 42" plasma tv or your very own > >>>Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > >>>_______________________________________________ > >>>Wicket-user mailing list > >>>Wicket-user@lists.sourceforge.net > >>>https://lists.sourceforge.net/lists/listinfo/wicket-user > >>> > >>> > >>> > >>> > >>> > >> > >>------------------------------------------------------- > >>SF.Net email is sponsored by: > >>Tame your development challenges with Apache's Geronimo App Server. Download > >>it for free - -and be entered to win a 42" plasma tv or your very own > >>Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > >>_______________________________________________ > >>Wicket-user mailing list > >>Wicket-user@lists.sourceforge.net > >>https://lists.sourceforge.net/lists/listinfo/wicket-user > >> > >> > >> > > > > > >------------------------------------------------------- > >SF.Net email is sponsored by: > >Tame your development challenges with Apache's Geronimo App Server. Download > >it for free - -and be entered to win a 42" plasma tv or your very own > >Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > >_______________________________________________ > >Wicket-user mailing list > >Wicket-user@lists.sourceforge.net > >https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > > > > > > > > ------------------------------------------------------- > SF.Net email is sponsored by: > Tame your development challenges with Apache's Geronimo App Server. Download > it for free - -and be entered to win a 42" plasma tv or your very own > Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > _______________________________________________ > Wicket-user mailing list > Wicket-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-user > ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user