在JSON-RPC调用期间,“arg 1无法解组”

时间:2014-01-30 19:06:14

标签: java javascript json json-rpc

我有一个不值得羡慕的任务,即编辑一个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。感谢任何提示

1 个答案:

答案 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();