Kendo UI DatePicker为什么不通过POST提交表单时将值传递给JSP?

时间:2019-05-30 13:58:08

标签: jquery forms jsp kendo-ui

我正在构建一个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。

谢谢。

1 个答案:

答案 0 :(得分:0)

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