我的数据库中有任务列表。我想按日期过滤(完成日期) 如何通过$ 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
答案 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端。
如果有帮助,请告诉我。