Hi,

I just started using Validator yesterday, and tried to find some info on this particular problem but couldn't find anything, so my apologies if this has been posted about before. I'm using Validator outside of Struts, I don't believe this has any impact on the situation, but I do find it strange that it was so hard to find info on this, so I thought I'd mention it anyway. Right so, I created a small form, made my own validation.xml and let the form post to a servlet that would invoke Validator. So far so good.

However, when I decided to implement a email field, and gave it 2 dependencies, I was unable to access the results for both those dependencies. Here's the code i used:

            ValidatorResults results    = validator.validate();
           ValidatorResult result0     = 
results.getValidatorResult("modelNumber");
           ValidatorResult result1     = 
results.getValidatorResult("serialNumber");
           ValidatorResult result2     = 
results.getValidatorResult("firstName");
           ValidatorResult result3     = results.getValidatorResult("lastName");
           ValidatorResult result4     = results.getValidatorResult("email");

           log.debug("Modelnumber: "   + result0.isValid("required"));
           log.debug("Serialnumber: "  + result1.isValid("required"));
           log.debug("First name: "    + result2.isValid("required"));
           log.debug("Last name: "     + result3.isValid("required"));

           for( Iterator it = 
result4.getActionMap().keySet().iterator();it.hasNext();) {
               log.debug("key in result for email: " + it.next().toString());
           }
           log.debug("result4.containsAction(required)" + 
result4.containsAction("required"));
           log.debug("Email: "         + result4.isValid("required"));
           log.debug("Email: "         + result4.isValid("isEmail"));


Now, the output of the for loop, would only list the last dependency run on the email field. I took a dive into the code and after some searching, I edited the org.apache.commons.validator.Field class as follows:

move the line:

844: ValidatorResults results = new ValidatorResults();

to

835: ValidatorResults results = new ValidatorResults();


By moving it outside the dependencies loop, I was able to retrieve results for all the dependencies associated with a field.

Hope this helps anyone,
Bart

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to