java - 使用 Kendo api 日期选择器传递 LocalDateTime 数据的问题
问题描述
我正在使用 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 的新实体并将其保存到 DB,以下是该实体的代码:
@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
当我尝试添加新访问时,收到此消息:
字段 'date' 上的对象 'doctorVisit' 中的字段错误:拒绝值 [9/25/2018 8:00 AM]
并且:
无法将类型“java.lang.String”的属性值转换为属性“日期”所需的类型“java.time.LocalDateTime”
表单传递的格式与本地日期格式不兼容,我的问题是如何解决?
解决方案
推荐阅读
- python - 无法使用 jupyter notebook 刷新 Bokeh JS 中的绘图
- java - Eclipse Maven 被阻止
- listview - Flutter:具有不同滚动方向和非固定尺寸的嵌套 ListView?
- string - Bash shell脚本从多行变量返回第一个数字/整数?
- ios - 如何使用经纬度查找 ArcGIS iOS AGSPoint xy 坐标?
- python - 使用 Selenium 循环通过 CSS 选择器时选择器无效或非法
- php - 加载标签文件 xml PHP
- ios - iOS 11 和 iOS 12 Locale.preferredLanguages 仅返回 [en]
- javascript - 反应警告预计在箭头函数数组回调返回的末尾返回一个值
- javascript - 将两列变成选项卡