在我的應用程序中,查詢結果顯示使用jquery數據表。 最後一項任務是添加一個日期字段以形成搜索,但此值對最終用戶是可選的(與表單的其他人一樣)。使窗體日期值可選
這是代碼部分,其中我初始化與表單數據的字段:
DTevents = $('#eventsdata').DataTable(
{
"serverSide": true,
"ajax":{
url: "../getevents.json",
type: "post",
"data": function (d)
{
return $.extend(d, {typename : $('#typename').val()}, {infoname : $('#infoname').val()},
{hostname : $('#hostname').val()}, {datevalue : moment($('#datevalue').val()).toDate().getTime() });
}
},
中的其他字段也如果空接受;對於這一點,在我的春節,控制器,我用這個代碼:
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}
正如你所看到的,日期是在輸入給moment.js轉換爲長傳給控制器。如果我查詢應用程序時沒有爲其他字段插入值,它可以很好地工作(在我們的場景中,沒有來自Form的值的查詢用於執行SELECT *
)。
但現在,如果我離開的日期空的,我得到一個空表和控制檯消息:
2017-08-23 12:32:44.870 WARN 8396 --- [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Failed to bind request element: org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'long'; nested exception is java.lang.NumberFormatException: For input string: "NaN"
所以我的問題是:我怎麼能告訴我的應用程序,也是「日期」字段是可選的?
注意,您可以使用['的valueOf()'](http://momentjs.com/docs/#/displaying/unix-timestamp-milliseconds/)來獲取毫秒因爲Unix Epoch從一個時刻直接對象而不是將其轉換爲toDate(),然後調用getTime()。 – VincenzoC