You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by bu...@apache.org on 2005/04/14 17:17:24 UTC
DO NOT REPLY [Bug 34454] New: -
[contribution] Consecutive Date Validator
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=34454>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=34454
Summary: [contribution] Consecutive Date Validator
Product: Struts
Version: 1.2.4
Platform: PC
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: Validator Framework
AssignedTo: dev@struts.apache.org
ReportedBy: kcbaltz@yahoo.com
[I sent this originally to struts-user and James Mitchell suggested I put it in
as an enhancement so it wouldn't be lost]
I had the need today to validate that two dates (start and end) are in the
proper relation. Searching the oracle at Google, I was unable to find any
solution other than people looking for the same thing and being directed to
write their own. So I wrote one today and figured I'd contribute it back so
that others can find it and I can also get a little extra scrutiny.
This was written for Struts 1.2.4
K.C. Baltz
================== snippet from validator-rules.xml ================
<validator name="consecutiveDates"
classname="com.mycompany.web.util.ValidationUtil"
method="validateConsecutiveDates"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.consecutiveDates">
</validator>
=================== Example entry in validation.xml ================
<form name="manageResourcesForm">
<!-- validate that this both a valid date and that it precedes the end
date -->
<field property="startDate" depends="date,consecutiveDates">
<msg name="consecutiveDates" key="errors.consecutiveDates" />
<arg0 key="admin.editNotice.prompt.startDate" />
<arg1 key="admin.editNotice.prompt.endDate" />
<var>
<var-name>secondProperty</var-name>
<var-value>endDate</var-value>
</var>
</field>
<!-- need to validate that this is a date -->
<field property="endDate" depends="date">
<arg0 key="admin.editNotice.prompt.endDate" />
</field>
</form>
=============== snippet from ValidationUtil.java ================
public static boolean validateConsecutiveDates(Object bean, ValidatorAction
va, Field field,
final ActionMessages errors, HttpServletRequest request)
{
boolean passedValidation = true;
String startDateString = ValidatorUtils.getValueAsString(bean,
field.getProperty());
String sProperty2 = field.getVarValue("secondProperty");
String endDateString = ValidatorUtils.getValueAsString(bean, sProperty2);
if(!GenericValidator.isBlankOrNull(startDateString) &&
!GenericValidator.isBlankOrNull(endDateString))
{
try
{
Locale locale = RequestUtils.getUserLocale(request, null);
DateFormat formatter =
DateFormat.getDateInstance(DateFormat.SHORT, locale);
Date startDate = null;
Date endDate = null;
try
{
startDate = formatter.parse(startDateString);
}
catch (ParseException e)
{
errors.add(field.getArg(0).getKey(), new
ActionMessage("errors.date", startDateString));
passedValidation = false;
}
try
{
endDate = formatter.parse(endDateString);
}
catch (ParseException e)
{
errors.add(field.getArg(1).getKey(), new
ActionMessage("errors.date", endDateString));
passedValidation = false;
}
if( startDate != null && endDate != null &&
startDate.after(endDate) )
{
errors.add(ActionMessages.GLOBAL_MESSAGE,
Resources.getActionMessage(request, va, field));
passedValidation = false;
}
return passedValidation;
}
catch(Exception e)
{
log.error("Exception caught trying to perform
validateConsecutiveDates", e);
errors.add(field.getKey(), Resources.getActionMessage(request,
va, field));
return false;
}
}
return true;
}
=====================================
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org