ポートレットで Kendo UI DatePicker を使用しています。これは私のjQuery ajaxコードです:
kendoWindow.find(".btnConfirm,.btnCancel").click(function(e)
{
if (jQuery(this).hasClass("btnConfirm"))
{
var strStartDate;
var strEndDate;
jQuery.ajax(
{
url : window.urlGenerateWorkbook,
data :
{
strStartDate : jQuery("#startDate").data("kendoDatePicker").value(),
strEndDate : jQuery("#endDate").data("kendoDatePicker").value()
},
dataType : "json",
cache : false,
async : true,
type : "POST",
timeout : 0,
success : function(jsonResponse)
{
if (jsonResponse.hasOwnProperty('ERROR'))
{
alertError(jsonResponse['ERROR']);
}
else
{
jQuery('.pnlJournalEntry #tdEntries > div').empty();
setJournalEntries(strPortletID);
}
},
error : function(jsonResponse)
{
alertError("There was no response from the server.");
}
});
}
kendoWindow.data("kendoWindow").close();
}).end();
Kendo Window を使用して、日付範囲を要求するポートレット内の別のウィンドウを開きます。次に、それらの日付を取得し、ajax を介して送信します。strStartDate と strEndDate をアラートすると、値が得られます。しかし、Java 側では、NullPointerException が発生しています。Firebug で POST メソッドを確認すると、何も投稿されていません。
誰かがこれを理解するのを手伝ってくれませんか? ありがとう。
編集:私は問題を見つけたと思います。Ajax ではすべてを文字列として送信する必要があります。Kendo UI の DatePicker で、strStartDate と strEndDate を value() に設定すると、Date が返されました。Ajax は日付を送信できないため、次のようにする必要がありました。
data :
{
strStartDate : jQuery('#startDate').data("kendoDatePicker").value().toString(),
strEndDate : jQuery('#endDate').data("kendoDatePicker").value().toString()
},
これにより、Java ViewController に以下が送信されます。
Fri Mar 01 2013 00:00:00 GMT-0500 (Eastern Standard Time) Tue Mar 12 2013 00:00:00 GMT-0400 (Eastern Daylight Time)
私はまだNullPointerExceptionを取得していますが、現在はJava側にあると思うので、少なくともデータを取得しています。提案してくれてありがとう。