2016-06-09 2 views
0

페이지로드시 데이터베이스에서 검색된 표 형식의 데이터를 표시하는 JSP 페이지가 있습니다. 테이블의 모든 행에는 레코드의 세부 정보를 표시하는 모달 창을 여는 마지막 열에 "more"버튼이 있습니다. 이 모달 창에는 버튼이 있습니다. 이 버튼을 클릭하면 새로운 모달 창에서 레코드의 감사 내역을 표시하려고합니다.
My JSP 파일에는 특정 레코드의 감사 내역 세부 사항을 검색하는 Ajax 호출이 들어 있습니다.요청 특성이 작업에서 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(); 
} 

액션 파일은 아약스 호출에서 매개 변수를 검색 한 후 기록 (감사 기록 ​​레코드)의 목록을 반환 이후 서비스 메서드를 호출하는 코드가 포함되어 있습니다. 내가 요청 객체에 속성으로이 목록을 설정하고 있습니다 :

request.setAttribute("MyList", myList); 

내 JSP에서이 속성에 액세스하려고하면, 그것은 정의되지 않습니다.

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

이것은 항상 비어 있습니다. 그러나, 내 액션 클래스에서 이것은 1 개의 레코드를가집니다. 이 문제에 대한 도움을 주시면 감사하겠습니다.

+0

[최소, 완전하며 검증 가능한 예] (http://stackoverflow.com/help/mcve)를 작성하십시오. 관련 코드와 정확한 오류 메시지가 있으면 다른 사람들이 귀하를 도울 수 있습니다. – Lexi

답변

0

JSON이 답변입니다. JSON 객체를 만들고 액션 파일에 응답 객체를 설정하도록 설정했습니다.

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