我正在构建一个JSP表单,其中包含Kendo UI DatePicker。由于某种原因,日期无法通过request.getParameter函数到达JSP控制器。它只会作为null出现。如何解决此问题?
我搜索过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值,但它为null。
谢谢。
答案 0 :(得分:0)
好的,这是一个令人尴尬的简单修复。 禁用的输入不会被提交。 。注释掉禁用它的行可以解决此问题。但是,我要做要禁用输入字段,因此我创建了一个新的隐藏输入字段,该字段在更改时获取日期选择器的日期值,而控制器则抓取该值。