首页 > 解决方案 > 如何从 AJAX 调用向 Spring 控制器发送空日期

问题描述

我有一个表单,我试图提供自动完成功能,但是当其中一个日期为空时,ajax 函数会不断抛出 400 错误。表单中有一些字符串、小数和日期,其中浮点数和日期可以为空或空。该函数适用于空浮点数,但不适用于日期。

我很感激任何帮助。

html:

<input type='date' class='Contract-startDate' required>

我的 JavaScript:

$(document).on('keypress', 'input.Contract-endDate, input.Contract-finalValue, input.Contract-name, input.Contract-startDate', function () {
    var root = $(this).closest('fieldset');
    $(this).autocomplete({
        minLength: 2,
        source: function (request, response) {
            $.ajax({
                url: domain + "/autocomplete/autocompleteContract",
                data: {
                    endDate: ($(root).find('input.Contract-endDate').val().length > 0) ? $(root).find('input.Contract-endDate').val() : null,
                    finalValue: ($(root).find('input.Contract-finalValue').val().length > 0) ? parseInt($(root).find('input.Contract-finalValue').val(), 10) : null,
                    name: $(root).find('input.Contract-name').val(),
                    startDate: ($(root).find('input.Contract-startDate').val().length > 0) ? $(root).find('input.Contract-startDate').val() : null
                },
                type: "POST",
                dataType: "json",
                success: function (data) {
                    response($.map(data, function (item, i) {
                        return {
                            // return
                        };
                    }).slice(0, MAX_RESULTS))
                },
                error: function (xhr) {
                    alert("Contract autocomplete error: " + xhr.status);
                }
            });
        },
        select: function (event, ui) {
            // select
        }
    });
});

我的弹簧控制器:

    @RequestMapping(value = "/autocompleteContract", method = RequestMethod.POST, headers = "Accept=*/*")
    @ResponseBody
    public String autocompleteContract(@RequestParam(value = "endDate", required = false) Date endDate, @RequestParam(value = "finalValue", required = false) BigDecimal finalValue, RequestParam(value = "name", required = false) String name, @RequestParam(value = "startDate", required = false) Date startDate) {
        // Handle data
    }

标签: javascriptjavajqueryspring

解决方案


推荐阅读