You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by bu...@apache.org on 2003/08/01 13:02:12 UTC
DO NOT REPLY [Bug 22046] New: -
field validation for a list of fields
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22046>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22046
field validation for a list of fields
Summary: field validation for a list of fields
Product: Commons
Version: unspecified
Platform: Other
OS/Version: Other
Status: NEW
Severity: Normal
Priority: Other
Component: Validator
AssignedTo: commons-dev@jakarta.apache.org
ReportedBy: Jovovich@gmx.net
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