jquery - 为什么 Kendo UI DatePicker 在通过 POST 提交的表单上没有将值传递给 JSP?
问题描述
我正在构建一个 JSP 表单,其中包含一个 Kendo UI DatePicker。由于某种原因,日期没有通过 request.getParameter 函数到达 JSP 控制器。它只会作为空值出现。我该如何解决这个问题?
我搜索过 Stackoverflow、Kendo UI 支持和 Google。我尝试了一些变化,但没有成功。我尝试过不同的浏览器和开发环境。
包含 datePicker 的表单部分:
<table class="vipTable">
<tr>
<th class="strong" colspan="3">Time Frame</th>
</tr>
<tr>
<td>Date Req <input type="text" name="dateReq" id="dateReq" size="10" value=""/><BR>(mm/dd/yyyy)</td>
<td>Expected Start Time <input id="startTime" name="startTime" title="startTime" value="8:00 AM"/></td>
<td>Expected Completion Time <input id="endTime" name="endTime" title="endTime" value="10:00 AM"/></td>
</tr>
</table>
JS 用于设置 datePicker,以便: - 只有星期日是活动的,只有未来的星期日是可选的 - 禁用键盘输入;强制使用日期选择器日历
// create DatePicker but ensure that only Sundays can be selected - present and future Sundays).
//That is, if today is Sunday, it is selectable in addition to future Sundays.
var presentDate = new Date();
var dayOfWeek = presentDate.getDay();
if(dayOfWeek != 0) {
// day of week is not Sunday
presentDate.setDate(presentDate.getDate() + ( 7 - dayOfWeek));
}
var dd = presentDate.getDate();
var mm = presentDate.getMonth() + 1; //January is 0!
var yyyy = presentDate.getFullYear();
if (mm < 10) {
mm = '0' + mm;
}
var closestSunday = mm + '/' + dd + '/' + yyyy;
$('#dateReq').attr("value", closestSunday);
$('#dateReq').kendoDatePicker({
value: presentDate,
min: presentDate,
disableDates: ["mo", "tu", "we", "th", "fr", "sa"],
change: function() {
var value = this.value();
$("#dateReq").attr("value", kendo.toString(new Date(value), "d"));
}
}).data('kendoDatePicker');
// Disable manual input on this field, force use of calendar.
$("#dateReq").attr("disabled","disabled");
试图获取日期选择器值的 JSP 代码
String dateReqString = request.getParameter("dateReq");
if (MY_LOG.isDebugEnabled()) {
MY_LOG.debug("formattedDate: dateReqString = " + dateReqString);
}
日志中的错误消息
[WebContainer : 7] DEBUG {} ITOutageSubmitController - formattedDate: dateReqString = null
java.lang.NullPointerException
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1450)
at java.text.DateFormat.parse(DateFormat.java:375)
at com.kmbs.itsform.portlet.controller.ITOutageSubmitController.handleActionRequest(ITOutageSubmitController.java:57)
请注意,ITOutageSubmitController 中的第 57 行尝试使用 dateReq 参数中的 dateReqString 值,但它为空。
谢谢。
解决方案
好的,这是一个令人尴尬的简单修复。 禁用的输入不会被提交。 注释掉禁用它的行解决了这个问题。但是,我确实希望禁用输入字段,因此我创建了一个新的隐藏输入字段,该字段在更改时获取日期选择器的日期值,而控制器则获取该值。
推荐阅读
- typescript - 使用通用值修改接口键
- java - SpringBoot JPA 存储库 bean 命名策略
- python - Tensorflow Keras 损失为 NaN
- node.js - 用数据保存渲染的 PUG 的 HTML
- php - laravel 8 中如何自定义默认登录错误信息
- python - Html to Docx 不应用标题样式
- python - ModuleNotFoundError:运行 nvidia/deeplearningexamples reponstory 时没有名为“nvidia.dali.backend_impl”的模块
- asp.net-web-api - Asp.net core 3.1版本响应码400
- c++ - 没有“getline”实例与参数列表匹配
- vba - 通过 VBA 发送 Rest 请求时出现运行时错误