yes, that is a bug Juergen
On 11/8/05, Ingram Chen <[EMAIL PROTECTED]> wrote: > I check out latest CVS HEAD, but find strange behavior: > > If a MyPage.properties as below: > > RequiredValidator = ${label} is required > myForm.bookId = Book ID > > then validation message work well and is "Book ID is required" > > However, if I move above messages into global MyWebApplication.properties, > the message I got become: "bookId is required", which use componentId > instead of defined label: "myForm.bookId". > > Is this a bug ? > > > On 11/8/05, Juergen Donnerstag <[EMAIL PROTECTED]> wrote: > > > > 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 > > > > > > -- > Ingram Chen > Java [EMAIL PROTECTED] > Institue of BioMedical Sciences Academia Sinica Taiwan > blog: http://www.javaworld.com.tw/roller/page/ingramchen ------------------------------------------------------- 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