> 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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user