Проблема с передачей данных LocalDateTime с помощью средства выбора даты Kendo api - PullRequest
0 голосов
/ 13 сентября 2018

Я использую инструмент выбора даты кендо в виде 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'

Форматы, передаваемые формой, и форматирование локальной даты несовместимо, мой вопрос, как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...