Don't forget anonymous validators will carry a reference to the page (or
whatever the outside class is) so they will be huge when serialized.

The way I see it: adding an Imodel to the formcomponent is cheaper then a
hashmap or a minimap or whatever and it is 100% general use case so it
should def be part of the framework. Building that context might be way
overkill.

2) can already be done by providing your own IValidatorResourceKeyFactory -
I created that patch for this exact year months ago.

-Igor


> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of 
> Juergen Donnerstag
> Sent: Wednesday, October 12, 2005 12:13 PM
> To: wicket-user@lists.sourceforge.net
> Subject: Re: [Wicket-user] add ${label} as a validator 
> message variable
> 
> Currently I override messageModel() (an approach I don't like 
> very much either, but until we have a better one). That is 
> part one. Part
> 2: I modified AbstractValidator.error() to load a string resource with
> validator.getClass() being the key (solving the default 
> problem) and finally I added a StringResourceLoader to 
> application settings which read string resources from 
> Application.properties which contain the ultimate default 
> values if none of the other files contain the properties.
> 
> Juergen
> 
> I add an additional StringResourceLoader to the settings which
> 
> On 10/12/05, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
> > > The default message problem can be solved and it is working on my 
> > > laptop already. But IMO your request has two parts:
> > > ${label} AND default messages.
> > > And the ${label} part IMO is the one which needs some more 
> > > discussions. Any idea on how to solve the problem that a 
> context is 
> > > kind of anonymous where you prefer setLabel().
> > > What about a FormComponentContext which is derived from 
> HashMap and 
> > > which implements setLabel()?
> >
> > Imho this is not a two-part problem. How are you feeding 
> the label to 
> > the validators right now?
> >
> > -Igor
> >
> >
> > >
> > > Juergen
> > >
> > > On 10/12/05, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
> > > > > Lets continue the discussion on the list
> > > > >
> > > > > Currently I do not have the perfect solution. Your
> > > approach is more
> > > > > concise but I don't like that it
> > > > > - is limited to label and tomorrow someone else will 
> ask for yet 
> > > > > another variable to add validators
> > > >
> > > > This discussion started out to find a solution to 
> provide default 
> > > > error messages. Label is a required variable for that. I
> > > cant really
> > > > think of any other variables that users may ask for, can
> > > anyone give suggestions?
> > > >
> > > > > - the same will happen to formComponent. Add yet 
> something else
> > > > > - though label and form components do have a 
> relationship, I'd 
> > > > > prefer not to add that "dependency" (see the previous 
> comments).
> > > > > Label is not realy a part of a formComponent and inventing a 
> > > > > FormComponentLabel doesn't make it better, IMO.
> > > >
> > > > There is no dependency, you don't need to use
> > > FormComponentLabel it is
> > > > simply a convinience.
> > > >
> > > > > Just an idea: What about a "context" (HashMap) which 
> we'll add 
> > > > > to FormComponent instead of Label. Thus users are more
> > > flexible and we
> > > > > must not fear to add additional varaibles next month. The
> > > "context"
> > > > > would automatically be added to the validators 
> pre-existing model.
> > > > > Instead of
> > > >
> > > > I like the context but I really don't like magic strings.
> > > Externally I
> > > > would still like to have set/getLabelModel(). Seems to me if 
> > > > people will want to use default error messages or provide their
> > > own generic
> > > > messages there will always need to be a label in the 
> context so we 
> > > > might as well make it easy/foolproof to set it.
> > > >
> > > > -Igor
> > > >
> > > >
> > > > >
> > > > > TextField tf=new TextField("hi"); 
> tf.setLabelModel(new Model("Hi 
> > > > > TextField"));
> > > > >
> > > > > you would do
> > > > > TextField tf=new TextField("hi"); 
> > > > > tf.getValidatorContext().put("label", labelModel);
> > > > >
> > > > > The name implies it is related to validators (no magic)
> > > and it is a
> > > > > general solution.
> > > > > What do you think? Are there any other idea how to solve
> > > the problem
> > > > > flexible and elegant?
> > > > >
> > > > > Juergen
> > > > >
> > > > >
> > > 
> --------------------------------------------------------------------
> > > > > --
> > > > >
> > > > > Initial Comment:
> > > > > we need to be able to generate validator messages 
> with pattern 
> > > > > "${label} is a required field.". Somehow we need to 
> link a label 
> > > > > with a form component.
> > > > >
> > > > >
> > > > >
> > > > >
> > > 
> --------------------------------------------------------------------
> > > > > --
> > > > >
> > > > > >Comment By: Igor Vaynberg (ivaynberg)
> > > > > Date: 2005-10-12 17:00
> > > > >
> > > > > Message:
> > > > > Logged In: YES
> > > > > user_id=1293035
> > > > >
> > > > > so what you are proposing, if i understand it correctly,
> > > would work
> > > > > like this:
> > > > >
> > > > > final IModel labelModel=new Model("Hi TextField");
> > > TextField tf=new
> > > > > TextField("hi");
> > > > >
> > > > > tf.add(new RequiredValidator() { messageModel() { return 
> > > > > super.messageModel().put("label", labelModel);});
> > > > >
> > > > > tf.add(new EmailAddressTypeValidator() { 
> messageModel() { return 
> > > > > super.messageModel().put("label", labelModel);});
> > > > >
> > > > > as opposed to:
> > > > >
> > > > >
> > > > > TextField tf=new TextField("hi"); 
> tf.setLabelModel(new Model("Hi 
> > > > > TextField")); tf.add(RequiredValidator.getInstance());
> > > > > tf.add(EmailAddressTypeValidator.getInstance());
> > > > >
> > > > > is that correct?
> > > > >
> > > > >
> > > > >
> > > > >
> > > 
> --------------------------------------------------------------------
> > > > > --
> > > > >
> > > > > Comment By: Juergen Donnerstag (jdonnerstag)
> > > > > Date: 2005-10-12 16:35
> > > > >
> > > > > Message:
> > > > > Logged In: YES
> > > > > user_id=544015
> > > > >
> > > > > your are wrong. Validators already use a local model (see
> > > > > AbstractValidator.messageModel) which are created while 
> > > > > executing
> > > > > error() (that is, it is not a object variable).
> > > > > Overriding messageModel does not at all prevent validator
> > > singletons
> > > > > etc. I suggest you take a look at AbstractValidator and
> > > some of the
> > > > > other Validators which already extend messameModel.
> > > > >
> > > > > Yes, most (not every) FormComponent have labels and and they 
> > > > > have forms and they have pages and they have ... Does it mean
> > > we should
> > > > > add this information as well. No. I still think overriding 
> > > > > messageModel is the better solution
> > > > >
> > > > >
> > > 
> --------------------------------------------------------------------
> > > > > --
> > > > >
> > > > > Comment By: Igor Vaynberg (ivaynberg)
> > > > > Date: 2005-10-12 15:31
> > > > >
> > > > > Message:
> > > > > Logged In: YES
> > > > > user_id=1293035
> > > > >
> > > > > I dont see what value is added by adding the model into the 
> > > > > validators instead of the component. If we do it that way the 
> > > > > validators can no longer be singletons, also the same
> > > model has to
> > > > > be added to all validators for any form component 
> which wastes 
> > > > > space. FormComponent seems like the perfect place to do it.
> > > > >
> > > > > Most form components have label components "associated" with 
> > > > > them which have a model - we can create a formcomponentlabel 
> > > > > that will use the formcomponent's label model as its 
> own so we 
> > > > > will not be adding anything extra by having another 
> IModel ref 
> > > > > in the formcomponent.
> > > > >
> > > > >
> > > > >
> > > 
> --------------------------------------------------------------------
> > > > > --
> > > > >
> > > > > Comment By: Juergen Donnerstag (jdonnerstag)
> > > > > Date: 2005-10-12 06:10
> > > > >
> > > > > Message:
> > > > > Logged In: YES
> > > > > user_id=544015
> > > > >
> > > > > I'm -1 on adding a label model to FormComponent and 
> > > > > automatically use it for validators, because you actually can 
> > > > > extend the model used by the Validator by overriding
> > > > > messageModel() already with any value you want, not 
> only a label 
> > > > > (only IntegerValidator's messageModel is final which must be 
> > > > > removed).
> > > > >
> > > > > The 2nd part of your request, Wicket to provide default
> > > properties
> > > > > files with properties like RequiredValidator=xx instead of 
> > > > > formname.input2.RequiredValidator to define default
> > > values for all
> > > > > RequiredValidators I agree upon with one addition. 
> Users must be 
> > > > > able to disable/enable it through apps.Settings.
> > > > >
> > > > > Juergen
> > > > >
> > > > >
> > > 
> --------------------------------------------------------------------
> > > > > --
> > > > >
> > > > > Comment By: Igor Vaynberg (ivaynberg)
> > > > > Date: 2005-10-09 18:49
> > > > > - Show quoted text -
> > > > >
> > > > > Message:
> > > > > Logged In: YES
> > > > > user_id=1293035
> > > > >
> > > > > no, this is not supported currently.
> > > > > right now if i want to use a required validator i 
> need to do the
> > > > > following:
> > > > > page.properties:
> > > > > formname.input1.RequiredValidator=Input 1 is required 
> > > > > formname.input2.RequiredValidator=Input 2 is required
> > > > >
> > > > > what i would like is to be able to do the following:
> > > > > application.properties:
> > > > > RequiredValidator=${label} is required and have the 
> > > > > formcomponent feed the proper ${label} value
> > > > >
> > > > > what this allows us is to provideis  a list of 
> default validator 
> > > > > messages ie in webapplication.properties:
> > > > > RequiredValidator=${label} is required 
> EmailTypeValidator=field 
> > > > > ${label} contans an invalid email address
> > > > >
> > > > > so the users dont have to provide
> > > component*validator-count property
> > > > > messages that are all mostly the same.
> > > > >
> > > > > i think the easiest way to accomplish this is to add an
> > > IModel label
> > > > > field to the FormComponent and have the abstract
> > > validator set the
> > > > > value of that model as the ${label} variable in the context.
> > > > >
> > > > > This would also allow as to have a nice
> > > FormComponentLabel component
> > > > > that uses the FormComponent's label model as its own model.
> > > > >
> > > > >
> > > > >
> > > 
> --------------------------------------------------------------------
> > > > > --
> > > > >
> > > > > Comment By: Juergen Donnerstag (jdonnerstag)
> > > > > Date: 2005-10-09 12:40
> > > > >
> > > > > Message:
> > > > > Logged In: YES
> > > > > user_id=544015
> > > > >
> > > > > I think this is already supported. Please see wicket src/test 
> > > > > wicket.util.tester.apps_1.CreateBook
> > > > > (java/properties) and wicket-examples src/java 
> > > > > wicket.examples.forminput.FormInput (java/properties)
> > > > >
> > > > >
> > > > > -------------------------------------------------------
> > > > > This SF.Net email is sponsored by:
> > > > > Power Architecture Resource Center: Free content, downloads, 
> > > > > discussions, and more. 
> > > > > http://solutions.newsforge.com/ibmarch.tmpl
> > > > > _______________________________________________
> > > > > Wicket-user mailing list
> > > > > Wicket-user@lists.sourceforge.net 
> > > > > https://lists.sourceforge.net/lists/listinfo/wicket-user
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > > > -------------------------------------------------------
> > > > This SF.Net email is sponsored by:
> > > > Power Architecture Resource Center: Free content, downloads, 
> > > > discussions, and more. 
> http://solutions.newsforge.com/ibmarch.tmpl
> > > > _______________________________________________
> > > > Wicket-user mailing list
> > > > Wicket-user@lists.sourceforge.net
> > > > https://lists.sourceforge.net/lists/listinfo/wicket-user
> > > >
> > >
> > >
> > > -------------------------------------------------------
> > > This SF.Net email is sponsored by:
> > > Power Architecture Resource Center: Free content, downloads, 
> > > discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl
> > > _______________________________________________
> > > Wicket-user mailing list
> > > Wicket-user@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/wicket-user
> > >
> > >
> > >
> >
> >
> >
> >
> > -------------------------------------------------------
> > This SF.Net email is sponsored by:
> > Power Architecture Resource Center: Free content, downloads, 
> > discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl
> > _______________________________________________
> > Wicket-user mailing list
> > Wicket-user@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/wicket-user
> >
> 
> 
> -------------------------------------------------------
> This SF.Net email is sponsored by:
> Power Architecture Resource Center: Free content, downloads, 
> discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl
> _______________________________________________
> Wicket-user mailing list
> Wicket-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-user
> 
> 
> 




-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to