首页 > 解决方案 > 如何将 servlet 中的数据加载到 jsp 中(包含在另一个 jsp 中)

问题描述

我有一个 HomePage.jsp,其中包含另一个 jsp,其中包含 Reporting.jsp,

<%@ include ...%> 

每当单击 HomePage.jsp 上的特定链接时,我都希望使此页面从 servlet 加载数据。

我尝试使用 jQuery AJAX 方法来 POST 到 servlet,但是,现在的问题是如何将数据传递给我包含的 jsp?

包含的 JSP 使用 JSTL 从请求中读取数据并相应地呈现 jsp。(我知道还有其他方法,例如返回 JSON / XML 文件 servlet,然后使用 javascript 或 jquery 来解析它,但是有没有办法以 JSTL 的方式处理它)

在 HomePage.jsp 上,我的 AJAX 函数如下所示

    $("#ReportingLink_id").on("click", function(){
    $.ajax({
        type: "POST",
        url: "MaintainUser",
        data: "",
        success: function(result){

        },
        error: function(){

        }
    })

在 Reporting.jsp 上,我的 JSTL 看起来像这样

<tbody>
        <c:forEach var="tempProject" items="${projectInfo}">
            <tr>
                <td><span class="ClickableID"><u><c:out value="${tempProject.getProjectID()}"></c:out></u></span></td>
                <td><c:out value="${tempProject.getProjectName()}"></c:out></td>
                <td><c:out value="${tempProject.getClientName()}"></c:out></td>
                <td><c:out value="${tempProject.getAssignedProjectGroupName()}"></c:out></td>
                <td><c:out value="${tempProject.getQuotedDuration()}"></c:out></td>
                <td><c:out value="${tempProject.getForecastBudget()}"></c:out></td>
            </tr>
        </c:forEach>    
</tbody>

在我的 servlet 上,我试过这个,

request.setAttribute("projectInfo", projectInfo);

rd = request.getRequestDispatcher("/JSPs/SubJSPs/ProjectReporting.jsp");
rd.forward(request, response);

我可以确认 servlet 已收到来自 AJAX 事件的 POST 请求,但是在转发请求后,Reporting.jsp 上没有显示任何内容。

标签: jqueryajaxjspservletsjstl

解决方案


尝试${requestScope.projectInfo}在表达式语言中访问范围时设置范围:

<c:forEach var="tempProject" items="${requestScope.projectInfo}">
            <tr>
                <td><span class="ClickableID"><u><c:out value="${tempProject.getProjectID()}"></c:out></u></span></td>
                <td><c:out value="${tempProject.getProjectName()}"></c:out></td>
                <td><c:out value="${tempProject.getClientName()}"></c:out></td>
                <td><c:out value="${tempProject.getAssignedProjectGroupName()}"></c:out></td>
                <td><c:out value="${tempProject.getQuotedDuration()}"></c:out></td>
                <td><c:out value="${tempProject.getForecastBudget()}"></c:out></td>
            </tr>
        </c:forEach> 

推荐阅读