我有一个不值得羡慕的任务,即编辑一个2000行的javascript文件,以便维护并为用JSP,Json-RPC,jQuery和Java编写的Web应用程序添加一些新功能。除了基本的Javascript知识之外,我对jQuery和Json-RPC没有任何更深入的了解,原来的开发人员已经不存在了。 有一个JS函数接受一些参数,并调用一个Json-RPC,在这里我得到错误
arg 1无法解组
有人可以告诉我这个错误意味着什么吗?
这是我的代码
function distributeQuantityNew(pReportId, pDecimalPlaces, pRun) {
try {
alert('distributeQuantityNew: ' + pReportId + ', ' + pDecimalPlaces + ', ' + pRun);
var fieldValue = $("#distribution_quantity_" + pReportId).val();
if (fieldValue.length == 0) {
showErrorDialog(resourceBundleMap["error.no.distribution.quantity"]);
return;
} else {
$("#distribution_quantity_" + pReportId).val("");
}
var affectedRowIds = [];
var rows = $("#tableBody_" + pReportId + " tr:visible").has("input[type=text]").filter(function(index) {
var voucherType = this.cells[getVoucherColumnIndex()].innerHTML;
if ((voucherType == 'TRANSFER_CS') || (voucherType == 'PAYOUT_CS') || (voucherType == 'SOURCE_BON') || (voucherType == 'PAYOUT_BON')) {
return false;
}
affectedRowIds.push(parseInt(this.id.split("_")[3]));
return true;
}
);
var affectedReportRows = $.extend(true, {}, foreignReportMap[pReportId]);
$.each(affectedReportRows.map, function(i, row) {
if ($.inArray(row.partnerReportBillNr, affectedRowIds) == -1) {
delete affectedReportRows.map["row_" + row.partnerReportBillNr];
}
});
var report = getLoadedReportByRunId(pReportId);
var productType = report.partnerProductType;
SessionManager.extend();
var resultRows = jsonrpc.foreignReportObject.distributeQuantity(affectedReportRows, fieldValue, pDecimalPlaces, pRun);
alert('back after RPC');
$.each(resultRows.map, function(i, row) {
foreignReportMap[pReportId].map["row_" + row.partnerReportBillNr] = row;
updateForeignReportRow(row, true, productType);
});
updateSummaryRow(pReportId);
toggleApproveAllLink(pReportId);
sortForeignReportTable(pReportId, true);
} catch (e) {
handleError("Failed to distribute quantity: ", e);
}
}
我已经通过警报来填充它,以便我知道RPC调用是否成功,但我在catch块之前得到错误arg 1 could not unmarshal
。感谢任何提示
答案 0 :(得分:0)
好的,解决了。远程函数的第一个参数是期望Map<String, SomeBO>
的列表。 SomeBO
是一个包含几个BigDecimals的bean。我有另一个JS函数,它设置了传递给Map的值。此功能设置了BigNumber
我只有String
的设置器。我希望我从JSON unmarshaller获得的错误更具描述性......以下是我添加.toString()
来解决问题的代码
foreignReportMap[pReportId].map["row_" + pRowId].clientQuantity = clientQuantity.toString();
foreignReportMap[pReportId].map["row_" + pRowId].totalClientQuantity = totalClientQuantity.toString();