请求属性未从Action传递到JSP

时间:2016-06-09 09:50:01

标签: ajax jsp struts1

我有一个JSP页面,显示页面加载时从数据库中检索的表格数据。表格中的每一行都有一个"更多"最后一列中的按钮,打开一个显示记录详细信息的模态窗口。在这个模态窗口中,我有一个按钮。单击此按钮,我想在新的模态窗口中显示记录的审核历史记录 我的JSP文件包含Ajax调用,用于检索特定记录的审计详细信息。

function showHistoryLog() {
    var questionId = document.getElementById("txtQuestionId").innerText;

    var url = "myAction.do?dispatchMethodName=getAuditTrail&questionId="+questionId; 

    $.ajax({
    method : "GET",
    url : url,
    data : questionId
    }).done(function(msg) {
        alert("Record retrieved successfully.");
        $('#detmyAudit').modal('show');
    });

    ev.preventDefault();
}

操作文件包含从ajax调用中检索参数然后调用后续服务方法的代码,该方法返回记录列表(审计历史记录)。 我将此列表设置为请求对象中的属性:

request.setAttribute("MyList", myList);  

当我尝试在JSP中访问此属性时,它是未定义的。

<tbody>
        <logic:notEmpty name="MyList"> 

这总是空的。但是,在我的动作类中,这有1条记录。 对此有任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

JSON就是答案。我创建了一个JSON对象并将其设置为在我的Action文件中设置响应对象。

String myJsonObj = createJSONObject(myList);
setReponseObj(response, myJsonObj, "text/html");

在我的JSP中访问此JSON对象。函数showHistoryLog现在更改为:

function showHistoryLog() {

    var questionId = document.getElementById("txtQuestionId").innerText;

    var url = "myAction.do?dispatchMethodName=getAuditTrail&questionId="+questionId; 

    if ( $.fn.DataTable.isDataTable( '#tblmyAudit' ) ) {
        var auditTable = $('#tblmyAudit').dataTable().api();
        auditTable.destroy();
    }

    $('#tblmyAudit').DataTable( {
        ajax: {
        url: url,
        dataSrc: 'data'
        },
        columns: [
              { data: "QuestionId" },
              { data: "Question" },
              { data: "Answer" },
              { data: "UpdatedBy" },
              { data: "UpdatedDate" }
          ],
        "scrollX": true,

    } );

    $('#detmyAudit').modal('show');
}