Вид:Validator с календарем primefaces
<p:calendar id="dateRequisition" widgetVar="calwidget" pattern="yyyy-MM-dd HH:mm" value="#{examrequisitionsController.selected.dateRequisition}"
title="#{bundle.CreateExamrequisitionsTitle_dateRequisition}" required="true" requiredMessage="#{bundle.CreateExamrequisitionsRequiredMessage_dateRequisition}"
converterMessage="Invalid Birth Date." effect="slide" showOn="both" navigator="true" yearRange=":+1"
minHour="06" maxHour="18" stepMinute="10" disabledWeekends="true" readonlyInput="true">
<f:validator validatorId="dateValidator" />
</p:calendar>
Validator:
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
String msg = "";
if (value == null) {
msg = "The Date field is required";
} else {
Date dateRequisition = null;
try {
dateRequisition = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH).parse(value.toString());
} catch (ParseException ex) {
Logger.getLogger(DateValidator.class.getName()).log(Level.SEVERE, null, ex);
}
if (!Persistence.createEntityManagerFactory("SystemCardiologyReportsPU").createEntityManager().createNamedQuery("Examrequisitions.findByDateRequisition")
.setParameter("dateRequisition", dateRequisition).getResultList().isEmpty()) {
msg = "The Date of requisition is already defined.";
}
}
if (!"".equals(msg)) {
JsfUtil.validatorMessage(msg);
}
}
Колонка в БД: dateRequisition datetime NOT NULL
.
Я отлаживал и значение, полученное в классе проверки, имеет следующий формат: (java.util.Date) Sun Nov 15 06:00:00 GMT-03:00 2015
.
Итак, я хочу отформатировать его до yyyy-MM-dd HH:mm
и сравнить со всеми датами в моей БД для проверки, если он уже содержится в моей БД.
Btw, он всегда ловит ParseException.