Hi Niall,
thanks again for the quick response.
I've been looking at the struts and validator source and have a couple
of ideas for a solution to my problem.
1) just create an appropriate validator and execute it. Simpler but
doesn't 'feel' as good.
IntegerValidator validator = IntegerValidator.getInstance();
Integer fooInteger = validator.validate(fooString, "#,##0.00",
Locale.GERMAN);
if (fooInteger == null) {
// error...not a valid Integer
return;
}
2) get the existing validator for the form and add the appropriate
validator, so all of the form validations are executed i.e. from the
config and additional validations.
Validator validator = Resources.initValidator(validationKey,
this,
application, request,
errors, page);
*pseudocode*
validator.add(fooBarValidator,..,...,..)
validator.validate();
this feels better as the existing framework is responsible for executing
all validations, assembling cumulative errors and creating localised
messages. I'm just not sure it's possible to add validations.
I think I may have to clone form validators so that adding validations
to the validator doesn't affect subsequent validations on forms with the
same name.
any chance you can point me in the right direction before I waste 2 days
trying something impossible :)
cheers
Nathan
Niall Pemberton wrote:
On 2/9/07, Nathan Coast <[EMAIL PROTECTED]> wrote:
thanks Niall,
I've had a look at the examples and I'm not sure they demonstrate what I
need. The examples all seem to be simple boolean expressions e.g.
<field property="address1" depends="validwhen">
<arg key="validWhenForm.address1" />
<var>
<var-name>test</var-name>
<var-value>( (*this* != null) or
( (address2 == null) and
( (city == null) and
(zip == null) )))</var-value>
</var>
</field>
I have a select (fieldB) that determines the type of fieldA. So the
validation to operate on fieldA depends on the value of fieldB.
<field property="fieldA" depends="validwhen,required">
<arg key="form.fieldA" />
<var>
<var-name>test</var-name>
<var-value>
((fieldB == 'java.lang.Integer') && validateInteger(fieldA))
|| ((fieldB == 'java.lang.Float') && validateFloat(fieldA))
|| ((fieldB == 'java.util.Date') && validateDate(fieldA))
etc....
</var>
</field>
The above looks like JavaScript - because validwhen is server side
only. Either way validwhen doesn't cater for doing different types of
validation (e.g. integer, float etc) depending on a value.
is this possible? I'm thinking not, so a custom validation method is
probably what I need.
Looks like it
Niall
cheers
Nathan
Niall Pemberton wrote:
> On 2/9/07, Nathan Coast <[EMAIL PROTECTED]> wrote:
>> Hi,
>>
>> I have two fields in a form. I believe the validwhen rule executes a
>> specific rule (e.g. required) on field a based upon the value of field
>> b. The situation I have is that I need to execute different
validations
>> on field a determined by the value of field b.
>
> Yes - theres a validwhen example page in the struts-examples webapp in
> the binary distro (see the validation module).
>
>> Is this possible client side with the latest validator framework
>> (1.3.1)? or will I have to implement this functionality in the
validate
>> method of the form (server side)?
>
> validwhen is server side only.
>
> Its also a custom Struts validator - not part of Commons Validator so
> in that respect the version of Commons Validator is not relevant.
>
> Niall
>
>> cheers
>> Nathan
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]