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
- 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.
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
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