Я создаю JSP-форму, которая включает в себя Kendo UI DatePicker. По какой-то причине дата не попадает в контроллер JSP с функцией request.getParameter. Это только кажется нулевым. Как решить эту проблему?
Я искал 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 так, чтобы: - Активны только воскресенья, и можно выбрать только будущие воскресенья. - Отключить ввод с клавиатуры; принудительное использование календаря 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)
Обратите внимание, что строка 57 в ITOutageSubmitController пытается использовать значение dateReqString из параметра dateReq, но оно равно null.
Спасибо.
Ладно, это было до неприличия простое решение. Отключенные входы не отправляются. Закомментировав строку, отключающую его, проблема устранена. Однако я делать хочу, чтобы поле ввода было отключено, поэтому я создал новое скрытое поле ввода, которое получает значение даты средства выбора даты при изменении, и вместо этого контроллер захватывает это значение.