here's what worked, if anyone is interested:
initBinder:
Code:
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) {
NumberFormat nf = NumberFormat.getNumberInstance();
binder.registerCustomEditor(Long.class, null, new CustomNumberEditor(Long.class, nf, true));
// must follow this in request for bind to work: "Aug 18, 2004 1:31:44 PM"
//DateFormat df = DateFormat.getDateTimeInstance();
SimpleDateFormat df = new SimpleDateFormat("MMM dd, yyyy h:mm:ss a");
df.setLenient(false);
binder.registerCustomEditor(Date.class, null, new CustomDateEditor(df, true));
}
Validator:
Code:
if(project.getProjected_completion_date() == null | "".equals(project.getProjected_completion_date())) {
errors.rejectValue("projected_completion_date", "errors.required", new Object[] {new String("Projected Completion Date")}, "A Completion Date is Required");
}
if(project.getProjected_start_date() == null | "".equals(project.getProjected_start_date())) {
errors.rejectValue("projected_start_date", "errors.required", new Object[] {new String("Projected Start Date")}, "A Start Date is Required");
}
if(project.getProjected_start_date() != null && project.getProjected_completion_date() != null && (project.getProjected_completion_date().compareTo(project.getProjected_start_date()) < 0)) {
errors.rejectValue("projected_completion_date", "error.date-toosoon", new Object[] {new String("Projected Completion Date"), new String("Projected Start Date")}, "A Completion Date is Required");
}
messages:
Code:
error.date-toosoon={0} comes before {1}, please correct.
errors.required={0} is required.