I have the following validation XML that suites my needs perfectly: <field name="startYear"> <field-validator type="required"> <message>Start year is required.</message> </field-validator> <field-validator type="int"> 1900 <message>Please enter a date after 1900.</message> </field-validator> <field-validator type="fieldexpression"> startYear gte currentYear <message>Start year must be less than or equal to the current year (${currentYear}).</message> </field-validator> </field> <field name="endYear"> <field-validator type="required"> <message>End year is required.</message> </field-validator> <field-validator type="int"> 1900 <message>Please enter a date after 1900.</message> </field-validator> <field-validator type="fieldexpression"> endYear lt startYear <message>End Year must be after Start year.</message> </field-validator> </field>
I'd like to turn this into a Java class so I can have the following XML instead: <validator type="monthyear"> <message/> </validator> Is this possible? I've given it a shot and I'm having some difficulty figuring out how to add field errors so they appear in the proper location (next to the fields) in my form. Here's the code I have so far. I realize that addFieldError() is not supposed to take the error message as its 2nd argument, but I think it helps convey what I'm trying to do. public class MonthYearRangeValidator extends ValidatorSupport { private String _startFieldName = "startYear"; private String _endFieldName = "endYear"; public void validate(Object object) throws ValidationException { Integer startNumber = (Integer) getFieldValue(_startFieldName, object); if(startNumber == null) addFieldError(_startFieldName, "Start Year is a required field."); Integer endNumber = (Integer) getFieldValue(_endFieldName, object); if(endNumber == null) { addFieldError(_endFieldName, "End Year is a required field."); } if(!getValidatorContext().getFieldErrors().isEmpty()) return; if (startNumber < 1900) { addFieldError(_startFieldName, "Please enter a date after 1900."); } if (endNumber < 1900) { addFieldError(_endFieldName, "Please enter a date after 1900."); } if(!getValidatorContext().getFieldErrors().isEmpty()) return; if (startNumber < Calendar.getInstance().get(Calendar.YEAR)) { addFieldError(_startFieldName, "Start year must be less than or equal to the current year."); } if (endNumber < startNumber) { addFieldError(_endFieldName, "End Year must be after Start year."); } } public void setStartFieldName(String startFieldName) { _startFieldName = startFieldName; } public void setEndFieldName(String endFieldName) { _endFieldName = endFieldName; } } Thanks, Matt -- View this message in context: http://www.nabble.com/-s2--How-do-I-create-a-custom-date-range-validator--tf4245411.html#a12081467 Sent from the Struts - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]