2016-06-09 57 views
0

我有一個JSP頁面,它顯示在頁面加載時從數據庫檢索的表格數據。表中的每一行在最後一列中都有一個「更多」按鈕,它打開一個顯示記錄詳細信息的模式窗口。在這個模式窗口中,我有一個按鈕。單擊此按鈕時,我想在新的模式窗口中顯示記錄的審覈歷史記錄。
我的JSP文件包含Ajax調用來檢索特定記錄的審計詳細信息。請求屬性沒有從Action傳遞到JSP

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條記錄。 對此的任何幫助表示讚賞。

+0

請創建一個[最小的,完整的和可驗證的示例](http://stackoverflow.com/help/mcve)。有相關的代碼和確切的錯誤信息將允許其他人來幫助你。 – Lexi

回答

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'); 
}