如何将数据从servlet加载到jsp(包含在另一个jsp中)

时间:2018-05-18 05:19:32

标签: jquery ajax jsp servlets jstl

我有一个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上没有显示任何内容。

1 个答案:

答案 0 :(得分:0)

尝试使用表达式语言设置范围${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>