Почему Kendo UI DatePicker не передает значение в JSP при отправке формы через POST? - PullRequest
1 голос
/ 30 мая 2019

Я создаю форму JSP, которая включает в себя Kendo UI DatePicker. По какой-то причине дата не попадает в контроллер JSP с функцией request.getParameter. Это только кажется нулевым. Как мне исправить эту проблему?

Я искал Stackoverflow, поддержку пользовательского интерфейса Kendo и Google. Я попробовал несколько вариантов, но безуспешно. Я пробовал разные браузеры и среды разработки.

Раздел формы, который включает указатель даты:

<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-код пытается получить значение DatePicker

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.

Спасибо.

1 Ответ

0 голосов
/ 31 мая 2019

Хорошо, это было смущающе простое исправление. Отключенные входные данные не отправляются. Закомментирование строки, которая отключила его, устранило проблему. Тем не менее, я делаю хочу, чтобы поле ввода было отключено, поэтому я создал новое скрытое поле ввода, которое получает значение даты для средства выбора даты при изменении, и контроллер вместо этого получает это значение.

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