Ajax——如何通过父JSP向子JSP提供数据并重新加载

Ajax - How to provide data to a child JSP via a parent JSP and reload?

本文关键字:JSP 新加载 加载 提供数据 何通过 向子 Ajax      更新时间:2023-09-26

我希望有人能帮我想出最好的方法来解决我的问题。我试图做的是将现有的JSP部分(子)利用到另一个JSP页面(父)中。(这些页面由使用Spring的Weblogic 12c环境中的Java Controller类驱动。)子JSP包含一个数据表,该数据表是根据当前Java控制器提供的列表构建的。(模型属性称为claimList。)我尝试做的第一件事是这样将子元素包含到父元素中:

<jsp:include page="../../jsp/claimSummary.jsp"/> 

在父JSP中,有一个包含的JS文件,该文件包含一个函数,该函数构建与子JSP的claimList属性所需的完全相同的数据。这个方法在加载时执行。

包含父JSP的JS文件:

function parent() {};
var claimList = [];
$(function() {
    parent.buildClaimList();
};
parent.prototype.buildClaimList = function() {
    var fileNumber = $("#sidebar_primary_fileNumber").text();
    //request all the claims
    $.ajax({
        url: contextPath + "/getClaimList",
        type: "POST",
        data: {fileNumber: fileNumber},
        dataType: 'json',
        success: function (claims) {
            if (claims.success) {
                if (claims.data.length > 0) {
                    // Sort by claim date.
                    claims.data.sort(function (a, b) {
                        return new Date(a.claimDateDt) < new Date(b.claimDateDt);
                    });
                    claimList = claims.data;
                }
            }
        }
    });
    $('#claim-summary-table').load("../../../WEB-INF/jsp/claimSummary.jsp", function() {});
    return true;
};

我试着通过在父JS文件中使用claimList本地变量来提供列表…没有转换成子JSP,这并不奇怪。此外,在buildClaimList函数的末尾,我试图用更新的claimList数据重新加载子JSP,这也不工作,但我不知道为什么。

因此,子JSP不会重新加载,数据表也不会填充数据。我试图通过主要更改父JSP和/或JS文件来尽可能减少更改,以使此子JSP在父JSP中工作。是否有任何方法可以让子JSP识别本地变量claimList,就像它可以从控制器模型访问claimList属性一样?刷新JSP以使其显示从Ajax调用收集的数据而不重新加载父页面的最佳方法是什么?

谢谢你的帮助!

将数据claimList组成一个html表格data,并在表格中填写数据

var tableData = {some processing of claimList}

现在使用这个tableData变量并更新$('#claim-summary-table')

$('#claim-summary-table').html(tableData);