2014-07-24 2 views
-1

module에서 JSON 데이터를 가져 오지 못했습니다. Course 선택 상자에서 코스 이름을 선택하면 선택 상자.Struts2 프로젝트의 JSP 페이지에서 json 데이터를 서버에서 읽는 방법은 무엇입니까?

내 코드가 동작 클래스 서버 쪽을 칠 수있다. 내 유일한 문제는 modulelist 필드를 module 선택 상자에 읽는 것입니다.

struts.xml

<package name="json" namespace="/" extends="json-default"> 
     <action name="ajaxAction" class="com.admin.AddTestAction">    
      <result type="json" /> 
     </action>  
    </package> 

Struts2 Action 클래스 0123에서

 package com.admin; 

     import java.util.ArrayList; 
     import java.util.List; 

     import com.db.DAO; 
     import com.opensymphony.xwork2.ActionSupport; 
     import com.opensymphony.xwork2.ModelDriven; 

     public class AddTestAction extends ActionSupport { 

      List<String>courselist= new ArrayList<String>();   
      List<String>modulelist= new ArrayList<String>();   
      String courseName; 
      String module; 

      public String execute() 
      {   
       System.out.print("execute method called from TestAction");   
       DAO dao= new DAO();    
       courselist=dao.getCourses();  
       modulelist.add("select module");   
       if(getCourseName()!=null) { 
        System.out.print("course name is:"+getCourseName());     
        int id=dao.getCourseId(getCourseName());     
        modulelist=dao.getModules(id);    
        for(int i=0;i<modulelist.size();i++) {   
         System.out.println(modulelist.get(i));  
        }   
       }   
       return SUCCESS;      
      } 

      public List<String> getCourselist() { 
       return courselist; 
      } 

      public void setCourselist(List<String> courselist) { 
       this.courselist = courselist; 
      } 

      public String getCourseName() { 
       return courseName; 
      } 

      public void setCourseName(String courseName) { 
       this.courseName = courseName; 
      } 

      public List<String> getModulelist() { 
       return modulelist; 
      } 

      public void setModulelist(List<String> modulelist) { 
       this.modulelist = modulelist; 
      } 

      public String getModule() { 
       return module; 
      } 

      public void setModule(String module) { 
       this.module = module; 
      } 

     } 

addTest.jsp

 <html>  
      <head> 
       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
       <title>Insert title here</title> 
       <script type="text/javascript"> 
        function loadmodule() { 
         alert("Handler for Select Course called.");  
         var course = $("#course").val();  
         $.getJSON('ajaxAction', {  
          courseName: course 
         },  
         function(jsonResponse) {  
          var select = $('#module');  
          select.find('option').remove();  
          $.each(jsonResponse.stateMap, function(key, value) {  
           $('<option>').val(key).text(value).appendTo(select);  
          });   
         }); 
        } 
       </script> 
      </head>   
      <body> 
       <s:select name="course" id="course" list="courselist" headerValue="--select course--" headerKey="-1" label="Choose Course" onchange="loadmodule();"></s:select> 
       <s:select name="module" id="module" list="modulelist" label="choose module"></s:select> 
      </body> 
     <html> 
+0

''jsonResponse'에서 무엇이 반환됩니까? –

+0

실제로 모듈 선택 상자에는 아무 것도 표시되지 않습니다. 내 스택 추적을 확인하십시오. – user3622530

+0

스택 추적에 표시된 종속성이 누락되었습니다. –

답변

0

응답을 사용하면지도가 아니라 목록을 반복해야합니다. 목록을 사용하여 드롭 다운을 채우는 경우 옵션 텍스트는 일반적으로 해당 값과 같습니다.

$.each(jsonResponse.modulelist, function(idx, value) {  
    $('<option>').val(value).text(value).appendTo(select);  
}); 
관련 문제