Я использую инструмент выбора даты кендо в виде jsp-метки (используя spring + hibernate).Форма выглядит следующим образом:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link href="/Kstyles/kendo.common.min.css" rel="stylesheet" />
<link rel="stylesheet" href="/Kstyles/kendo.common.min.css" />
<link rel="stylesheet" href="/Kstyles/kendo.default.min.css" />
<script src="/Kjs/jquery.min.js"></script>
<script src="/Kjs/kendo.all.min.js"></script>
<title>Appointment</title>
</head>
<body>
<form:form modelAttribute="visit" method="POST" >
${spec}:<form:select path="doctor" multiple="false">
<c:forEach var="doctor" items="${doctors}">
<form:option value="${doctor}" label="${doctor.surname}"/>
</c:forEach>
</form:select>
Date and time:<form:input id="timePicker" path="date" />
Cause: <form:select path="cause" multiple="false">
<c:forEach var="cause" items="${causes}">
<form:option value="${cause}" label="${cause.description}"/>
</c:forEach>
</form:select>
<input type="submit" value="Submit"/>
</form:form>
<script>
(function($) {
var dateTimePicker = kendo.ui.DateTimePicker;
var MyWidget = dateTimePicker.extend({
init: function(element, options) {
dateTimePicker.fn.init.call(this, element, options);
},
startTime: function(startTime) {
var timeViewOptions = this.timeView.options;
timeViewOptions.min = startTime;
this.timeView.setOptions(timeViewOptions);
},
endTime: function(endTime) {
var timeViewOptions = this.timeView.options;
timeViewOptions.max = endTime;
this.timeView.setOptions(timeViewOptions);
},
options: {
name: "CustomDateTimePicker",
interval: 20,
}
});
kendo.ui.plugin(MyWidget);
})(jQuery);
var datePicker = $("#timePicker").kendoCustomDateTimePicker().data("kendoCustomDateTimePicker");
datePicker.startTime("07:00");
datePicker.endTime("20:00");
</script>
</body>
</html>
Эта форма должна создать и сохранить в БД новую сущность DoctorVisit, вот код для этой сущности:
@Entity
@Table(name = "visits", uniqueConstraints = {@UniqueConstraint(columnNames = {"date", "doctor_id"})})
public class DoctorVisit {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Enumerated(EnumType.STRING)
private Cause cause;
@DateTimeFormat(pattern="MM.dd.yyyy hh:mm ")
private LocalDateTime date;
@Enumerated(EnumType.STRING)
private Status status;
private String diagnosis;
private String prescription;
private String referalls;
@ManyToOne
private Patient patient;
@ManyToOne
private Doctor doctor;
private int durationMinutes;
@OneToOne
DoctorsOffice doctors_office;
//and all getters and setters
Когда япри попытке добавить новое посещение получить это сообщение:
Ошибка поля в объекте doctorVisit в поле date: отклоненное значение [25.09.2008 8:00 AM]
, а также:
Не удалось преобразовать значение свойства типа 'java.lang.String' в требуемый тип 'java.time.LocalDateTime' для свойства 'date'
Форматы, передаваемые формой, и форматирование локальной даты несовместимо, мой вопрос, как это исправить?