> -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: Friday, December 10, 2004 3:42 PM > To: [EMAIL PROTECTED] > Subject: Validator upgrade? > > > with the new struts 1.2.4 upgrade, I started to change all > the <arg0 ...> to <arg position="0"...> but find that my > custom validators are not being found. > 1. Is there a doc on upgrading the validator? > 2. Anyone ever heard of this happening?
I believe requiredif is being deprecated in favor of validwhen. However, the only reference I see is the key you are using, so that may not be valid. http://struts.apache.org/userGuide/dev_validator.html Other then that, everything else looks okay. Do you have a specific error you're getting? > > Here is my <form> validator: > ========================== > <field property="businessLineSelected" > depends="isequalif"> > <msg name="isequalif" > key="requiredif.productSelectionRequired"/> > <arg position="0" > key="form.businessLineSelected"/> > <var> > > <var-name>thisValue[0]</var-name> > <var-value>true</var-value> > </var> > <var> > <var-name>field[0]</var-name> > > <var-value>businessCardSelected</var-value> > </var> > <var> > > <var-name>fieldTest[0]</var-name> > <var-value>EQUAL</var-value> > </var> > <var> > > <var-name>fieldValue[0]</var-name> > <var-value>false</var-value> > </var> > <var> > <var-name>field[1]</var-name> > > <var-value>businessSecuredCardSelected</var-value> > </var> > <var> > > <var-name>fieldTest[1]</var-name> > <var-value>EQUAL</var-value> > </var> > <var> > > <var-name>fieldValue[1]</var-name> > <var-value>false</var-value> > </var> > <var> > <var-name>field[2]</var-name> > > <var-value>equipmentExpressSelected</var-value> > </var> > <var> > > <var-name>fieldTest[2]</var-name> > <var-value>EQUAL</var-value> > </var> > <var> > > <var-name>fieldValue[2]</var-name> > <var-value>false</var-value> > </var> > <var> > <var-name>fieldJoin</var-name> > <var-value>AND</var-value> > </var> > </field> > > And here is my custom validator: > =========================== <validator name="isequalif" > > classname="com.wf.bd.ice.rules.validation.ICEFieldChecks" > method="validateIsEqualIf" > methodParams="java.lang.Object, > > org.apache.commons.validator.ValidatorAction, > org.apache.commons.validator.Field, > > org.apache.struts.action.ActionMessages, > org.apache.commons.validator.Validator, > javax.servlet.http.HttpServletRequest" > msg="isequalif.default"> > </validator> > > > and here is the method in our ICEFieldChecks: > =================================== > > public static boolean validateIsEqualIf( > Object bean, ValidatorAction va, Field field, > ActionMessages errors, > org.apache.commons.validator.Validator validator, > HttpServletRequest request > ) { > Object form = > validator.getResource( > org.apache.commons.validator.Validator.BEAN_KEY > ); > String value = null; > > if(isString(bean)) { > value = (String) bean; > } else { > value = ValidatorUtil.getValueAsString(bean, > field.getProperty()); > } > > if(value == null) { > value = ""; > } > > boolean required = false; > java.util.Collection theseValues = new ArrayList(); > > int j = 0; > > while( > !GenericValidator.isBlankOrNull( > field.getVarValue("thisValue[" + j + "]") > ) > ) { > theseValues.add(field.getVarValue("thisValue[" + > j++ + "]")); > } > > if(theseValues.isEmpty()) { > return true; > } > > int i = 0; > String fieldJoin = "AND"; > > > if(!GenericValidator.isBlankOrNull(field.getVarValue("fieldJoin"))) { > fieldJoin = field.getVarValue("fieldJoin"); > } > > if(fieldJoin.equalsIgnoreCase("AND")) { > required = true; > } > > while( > !GenericValidator.isBlankOrNull( > field.getVarValue("field[" + i + "]") > ) > ) { > String dependProp = field.getVarValue("field[" + i + "]"); > String dependTest = > field.getVarValue("fieldTest[" + i + "]"); > String dependTestValue = > field.getVarValue("fieldValue[" + i + "]"); > String dependIndexed = > field.getVarValue("fieldIndexed[" + i + "]"); > > if(dependIndexed == null) { > dependIndexed = "false"; > } > > String dependVal = null; > boolean thisRequired = false; > > if(field.isIndexed() && > dependIndexed.equalsIgnoreCase("true")) { > String key = field.getKey(); > > if((key.indexOf("[") > -1) && > (key.indexOf("]") > -1)) { > String ind = key.substring(0, > key.indexOf(".") + 1); > dependProp = ind + dependProp; > } > } > > dependVal = ValidatorUtil.getValueAsString(form, > dependProp); > > if(dependTest.equals(FIELD_TEST_NULL)) { > if((dependVal != null) && (dependVal.length() > 0)) { > thisRequired = false; > } else { > thisRequired = true; > } > } > > if(dependTest.equals(FIELD_TEST_NOTNULL)) { > if((dependVal != null) && (dependVal.length() > 0)) { > thisRequired = true; > } else { > thisRequired = false; > } > } > > if(dependTest.equals(FIELD_TEST_EQUAL)) { > thisRequired = > dependTestValue.equalsIgnoreCase(dependVal); > } > > if(fieldJoin.equalsIgnoreCase("AND")) { > required = required && thisRequired; > } else { > required = required || thisRequired; > } > > i++; > } > > if(required) { > if(!theseValues.contains(value)) { > errors.add( > field.getKey(), Resources.getActionMessage( > request, va, field > ) > ); > > return false; > } else { > return true; > } > } > > return true; > } > > > > > -------------------- > Mick Knutson > Wells Fargo Business Direct Information Systems > (415) 222-1020 > > "This message may contain confidential and/or privileged > information. If you are not the addressee or authorized to > receive this for the addressee, you must not use, copy, > disclose, or take any action based on this message or any > information herein. If you have received this message in > error, please advise the sender immediately by reply e-mail > and delete this message. Thank you for your cooperation." > -------------------- > > > > --------------------------------------------------------------------- > 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]