[
https://issues.apache.org/jira/browse/VALIDATOR-169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sebb resolved VALIDATOR-169.
----------------------------
Resolution: Abandoned
> Field validation for a list of fields
> -------------------------------------
>
> Key: VALIDATOR-169
> URL: https://issues.apache.org/jira/browse/VALIDATOR-169
> Project: Commons Validator
> Issue Type: Improvement
> Components: Framework
> Environment: Operating System: other
> Platform: Other
> Reporter: Jovovich
> Priority: Minor
> Fix For: 2.0
>
> Attachments: ASF.LICENSE.NOT.GRANTED--patch.txt
>
>
> I have a JSP with a list of fields and I'm using the Validator in combination
> with Struts for validating the field entries. The current behaviour of the
> Validator in case of a failed validation is stopping the validation for the
> whole list of fields. It would be much better, if the validator is processing
> the list of fields in any case. As a JSP programmer, I am able to show an
> error message for _each_ wrong field of the list.
> This can be fixed with a small change in class Validator.java method
> validateField. Instead of doing a return statement in the inner loop, just
> call the break statement, so the outer loop can continue its work.
> private void validateField(Field field, ValidatorResults allResults)
> throws ValidatorException {
> Map actions = resources.getValidatorActions();
> if (field.isIndexed()) {
> Object oIndexed;
> try {
> oIndexed =
> PropertyUtils.getProperty(
> hResources.get(BEAN_KEY),
> field.getIndexedListProperty());
> } catch (Exception e) {
> log.error("in validateField", e);
> return;
> }
> Object indexedList[] = new Object[0];
> if (oIndexed instanceof Collection) {
> indexedList = ((Collection) oIndexed).toArray();
> } else if (oIndexed.getClass().isArray()) {
> indexedList = (Object[]) oIndexed;
> }
> for (int pos = 0; pos < indexedList.length; pos++) {
> ValidatorResults results = new ValidatorResults();
> StringTokenizer st = new StringTokenizer(field.getDepends(),
> ",");
> while (st.hasMoreTokens()) {
> String depend = st.nextToken().trim();
> ValidatorAction action = (ValidatorAction)
> actions.get(depend);
> if (action == null) {
> log.error(
> "No ValidatorAction called "
> + depend
> + " found for field "
> + field.getProperty());
> return;
> }
>
> boolean good =
> validateFieldForRule(field, action, results, actions,
> pos);
> allResults.merge(results);
> if (!good) {
> break;
> }
> }
> }
> Thanks,
> Tobias
--
This message was sent by Atlassian Jira
(v8.3.4#803005)