You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Niall Pemberton (JIRA)" <ji...@apache.org> on 2006/07/19 15:22:24 UTC
[jira] Updated: (VALIDATOR-169) [validator] Field validation for a
list of fields
[ http://issues.apache.org/jira/browse/VALIDATOR-169?page=all ]
Niall Pemberton updated VALIDATOR-169:
--------------------------------------
Component/s: Framework
> [validator] Field validation for a list of fields
> -------------------------------------------------
>
> Key: VALIDATOR-169
> URL: http://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
> Attachments: 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 is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org