我有一个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条记录。 对此有任何帮助表示赞赏。
答案 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');
}