如何在$ http.get请求中传递日期

时间:2016-07-18 05:25:50

标签: angularjs spring date

我的数据库中有任务列表。我想按日期过滤(完成日期) 如何通过$ http get request.i传递日期。尝试了一些code.it给出异常。 任何人都可以帮助我。

角:

$scope.date=1468175400000;
var deadline = new Date($scope.date);
        $http.get(
                '/user/task/gettasks/?status=' + $scope.status
                        + '&priority=' + $scope.priority
                        + '&projectId=' + $scope.project+'&deadline='+deadline).success(
                function(response) {
                    debugger
                    $scope.tasks = response;
                }).error(function(error) {
            console.log(error)
        })

服务(弹簧):

@RequestMapping("/gettasks")
    @JsonView({ TaskJsonView.Summary.class })
    public List<Task> getTasks(@RequestParam(value="status" ) String status,
            @RequestParam("priority") String priority,
            @RequestParam("projectId") String projectId,@RequestParam("deadline") Long deadline)  {
System.out.println(deadline);
        return taskControllerService.getTasks(status, priority, projectId,deadline);

    }

错误:

Object {
    timestamp: 1468819101831,
    status: 400,
    error: "Bad Request",
    exception: "org.springframework.web.method.annotation.MethodArgumentTypeMismatchException",
    message: "Failed to convert value of type [java.lang.String]… "
    MonJul11201600: 00: 00 GMT0530(IndiaStandardTime)
    ""…
}
error: "Bad Request"
exception: "org.springframework.web.method.annotation.MethodArgumentTypeMismatchException"
message: "Failed to convert value of type [java.lang.String] to required type [java.lang.Long]; nested exception is java.lang.NumberFormatException: For input string: "
MonJul11201600: 00: 00 GMT0530(IndiaStandardTime)
""
path: "/user/task/gettasks/"
status: 400 timestamp: 1468819101831 proto: Object

2 个答案:

答案 0 :(得分:3)

截止日期,您传递的是日期对象。 通过此new Date($scope.date).getTime(),这将把截止日期作为长时间戳发送。

var deadline = new Date($scope.date).getTime();

答案 1 :(得分:0)

从异常中我可以看到截止日期未正确解析。从UI发送Date对象,在服务器端,您接受Long值。请确保两端的数据类型保持一致。

如果日期是epochtime格式,那么首先像这样转换并将其附加到请求。

var time        = new Date(0);
var deadLineDate  = deadLineDate / 1000;
time.setUTCSeconds(deadLineDate);
requestObject = time.toISOString().slice(0, 10);

现在requestObject是字符串,请接受String @ server端。

如果有帮助,请告诉我。