I added one more function isValueParsableAsDate
Code: Select all
public static boolean isValueParsableAsDate(FacesContext context, Calendar calendar, Object value) {
SimpleDateFormat dateFormat = new SimpleDateFormat(calendar.calculatePattern(), calendar.calculateLocale(context));
try {
dateFormat.format(value);
} catch (IllegalArgumentException ex) {
return false;
}
return true;
}
Code: Select all
public static String getValueAsString(FacesContext context, Calendar calendar) {
Object submittedValue = calendar.getSubmittedValue();
if(submittedValue != null) {
return submittedValue.toString();
}
Object value = calendar.getValue();
if(value == null) {
return null;
} else {
//first ask the converter
if(calendar.getConverter() != null) {
return calendar.getConverter().getAsString(context, calendar, value);
}
//Use built-in converter
else {
SimpleDateFormat dateFormat = new SimpleDateFormat(calendar.calculatePattern(), calendar.calculateLocale(context));
dateFormat.setTimeZone(calendar.calculateTimeZone());
return dateFormat.format(value);
}
}
}
Code: Select all
public static String getValueAsString(FacesContext context, Calendar calendar) {
Object submittedValue = calendar.getSubmittedValue();
if (submittedValue != null) {
return submittedValue.toString();
}
Object value = calendar.getValue();
if (value == null) {
return null;
} else {
//first ask the converter
if (calendar.getConverter() != null) {
return calendar.getConverter().getAsString(context, calendar, value);
} //Use built-in converter
else {
SimpleDateFormat dateFormat = new SimpleDateFormat(calendar.calculatePattern(), calendar.calculateLocale(context));
dateFormat.setTimeZone(calendar.calculateTimeZone());
if (!isValueParsableAsDate(context, calendar, value)) {
return null;
}
return dateFormat.format(value);
}
}
}