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

Reply via email to