首页 > 解决方案 > 为什么 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 值,但它为空。

谢谢。

标签: jqueryformsjspkendo-ui

解决方案


好的,这是一个令人尴尬的简单修复。 禁用的输入不会被提交。 注释掉禁用它的行解决了这个问题。但是,我确实希望禁用输入字段,因此我创建了一个新的隐藏输入字段,该字段在更改时获取日期选择器的日期值,而控制器则获取该值。


推荐阅读