2014-11-07 3 views
2

주마다 Jsp One에 두 개의 드롭 다운리스트가 있습니다. 국가를 선택하자마자 statelist는 자동으로 해당 목록으로 채워 져야합니다. 하지만 아약스 호출 응답으로 전체 jsp 페이지지고있다. 내 아약스 프로그램 :Springmvc에서 컨트롤러에서 JSP로 Hashmap을 반환합니다.

$("select#country").change(function() { 
var val=$("#country").val(); 
alert(val); 
$.ajax({ 
url : 'getstates', 
method : 'get', 
contentType: 'application/json', 
data :{ 
      country : val 
     }, 

    success: function (data) { 
    alert("Success Response"+ data); 

    }, 

    error :function() 
    { 
      alert("error"); 
    }   

    }); 

내 컨트롤러 프로그램

@RequestMapping(value = "/getstates", method = RequestMethod.GET) 
public ModelAndView showstates(@RequestParam(required = false, value = "") 
    String country,@Valid @ModelAttribute("employee")Login employee, 
    BindingResult result, Model model) { 
    HashMap<String,String> stateMap = new HashMap<String,String>(); 
    //put your logic to add state on basis of country 

    if (country.equals("UnitedStates")) { 
     stateMap.put("Al","Alaska"); 
     stateMap.put("Tl","Texas"); 

    } else if (country.equals("UnitedKingdom")) { 
     stateMap.put("Be","Bedfordshire"); 
     stateMap.put("Ber","Berkshire"); 

    } else if (country.equals("India")) { 
     stateMap.put("Mh","Maharashtra"); 
     stateMap.put("WB","West Bengal"); 
     stateMap.put("KR","Karnataka"); 
     stateMap.put("AP","Andhra Pradesh"); 
     stateMap.put("TN","Tamil Nadu"); 
    } 


    return new ModelAndView("LoginForm","state" ,stateMap); 
} 

나는 봄 양식을 사용하고 있습니다. respone으로 Staemap 만 가져올 필요가 있지만 응답으로 전체 JSP 페이지가 표시됩니다.

답변

1

응답으로 Staemap 만 가져올 필요가 있지만 응답으로 전체 JSP 페이지 이 표시됩니다.

당신은 여기에서 볼 수있는 ModelAndView 객체를 반환하기 때문에,

return new ModelAndView("LoginForm","state" ,stateMap); 

당신은 당신의 ajax 응답 직접 HashMap를 인쇄하지 못할 method.However 컨트롤러에서 혼자 respone을 반환해야하는 경우 당신의 JSP입니다. 이럴 경우, JSONArray

JSONArray jarray = JSONArray.fromObject(statemap); 

읽기에

,536

send array from controller to a view using JSON in MVC

을 변환 할 수 있습니다
+0

감사합니다 .. 내가 Json 배열을 JSP로 반환해야합니까? 하지만 JSP로 jarray에 액세스하는 방법은 무엇입니까? – Niketa

+0

내 대답에 예제를 추가했습니다. 당신은 JSP로 그들을 직접 액세스 할 수 없습니다, 아약스에서 작업을 수행하는 자바 스크립트가 필요합니다. –

+0

스프링 폼과 jquery를 사용하고 있습니다. jquery에서 hashmap에 액세스하는 방법? 내 말은 해시 맵이 응답으로 전송되어 드롭 다운 메뉴에 액세스하고 넣는 방법일까요? – Niketa

0
@RequestMapping(value="LoadBaselineVersions") 
     @ResponseBody 
     public Map<Integer,String> loadBaseNames(@RequestParam(value="projectname") String name,HttpSession session){ 

       return basenameService.getBaselineversions(name); 
     } 
$("#projectname").bind(
       'blur', 
       function() { 
        $.ajax({ 
         type : 'post', 
         url : 'LoadBaselineVersions?projectname=' 
           + $("#projectname").val(), 
         dataType : 'json', 
         success : function(data) { 
          $("#baseversion").empty(); 
          $.each(data, function(val, text) { 

           $("#baseversion").append(
             $('<option></option>').val(text).html(
               text)); 

          }); 

         } 
        }); 
       }); 
관련 문제