2016-10-07 3 views
0

Spring MVC 웹 어플리케이션에 문제가 있습니다. categoryName과 subCategoryName의 두 가지 드롭 다운이 있습니다. categoryName 드롭 다운이 데이터베이스 값을 사용하여 채워졌습니다. 그것에 대한 코드는 아래에 표시되며 정상적으로 작동합니다.Spring MVC의 다른 드롭 다운에 기반한 드롭 다운 설정하기

컨트롤러있어서

@RequestMapping(value = "/add", method = RequestMethod.GET) 
public String showAddItem(Model model) { 

    List<Map<String, Object>> listCat = categoryRepository.viewCategoryList(); 
    model.addAttribute("listCat",listCat); 
    return "addItem"; 
} 

JSP 번호 :

드롭 다운 subCategoryName는 I가 Ajax 호출 데에 생각 분류로 dropdown.For으로부터 선택된 값에 의해 채워 져야한다
<form:select class="form-control" id="selectCat" path="categoryName"> 
    <form:option value="-" label="--Select Category--"/> 
    <c:forEach var="list" items="${listCat}"> 
     <form:option id="${list.key}" value="${list.get(\"name\")}">${list.get("name")}</form:option> 
    </c:forEach> 
</form:select> 

on change 이벤트를 다음과 같이 변경하십시오.

$("#selectCat").change(function(){ 
    var categoryNm = $(this).val(); 
    $.ajax({ 
     type: "POST", 
     url: "https://localhost:8443/admin/items/getSubcats", 
     data: {"categoryNm " : categoryNm }, 
     success: function(data){ 
      var slctSubcat = $("#selectSubCat"), option= ""; 
      slctSubcat.empty(); 

      for(var sb =0; sb<data.length; sb++){ 
       option = option + "<option value='" + data[sb].name + "'>" +data[sb].name + "</option>"; 
      } 
      slctSubcat.append(option); 
     }, 
     error:function(){ 
      alert("error"); 
     } 
    }); 

}); 

이 아약스 호출은 데이터베이스에서 관련 하위 카테고리 목록을 선택하는 쿼리를 포함하는 다음 컨트롤러 방법을 다룰 것이다.

//controller method to get relevant subcategory 
@RequestMapping(value="/getSubcats",method=RequestMethod.POST) 
public @ResponseBody List<Map<String, Object>> getSubcatList(@ModelAttribute("categoryNm") Category categoryNm){ 

    return categoryRepository.retrieveSubcatogories(categoryNm.getCategoryName()); 
} 

내가 채워 하위 카테고리 목록을하려는 JSP 코드는

다음과 같다하지만 하위 범주 드롭 다운이 채워지고 있지 않다. 아무도이

<form:select class="form-control" id="selectSubCat" path="subCategoryName"> 
    <form:option value="-" label="--Select sub-category--"/> 
</form:select> 
+0

당신이 당신의 응답'data'을 확인 제발 저를 알아낼 수 있을까요? 무엇이 표시됩니까? 또한 당신은'slctSubcat.empty();'를 가지고 있는데 이것은'select'에서 디폴트 옵션을 제거 할 것입니다. 이 기본 옵션을 먼저 추가해보십시오. 제대로 작동하는 경우 다시 작성한 다음 다시 확인하십시오. – VPK

+0

@VPK slctSubcat.empty();를 제거했지만 변경하지 않았습니다. 그런 다음 경고를 사용하여 응답을 확인했습니다. 성공 함수로 간다. 그러나 응답은 비어있다. (경고는 아무것도 표시하지 않는다.) – difna

+0

그런 다음 컨트롤러 메소드'getSubcatList()'가 올바른 값을 반환하는지 여부를 확인해야한다. 어쩌면 당신은'categoryRepository.retrieveSubcatogories (categoryNm.getCategoryName());에서 null 값을 얻었습니다. ' – VPK

답변

0
@RequestMapping(value="/getSubcats",method=RequestMethod.POST) 
public @ResponseBody List<Map<String, Object>> getSubcatList(@RequestParam("categoryNm") String categoryNm){ 

    return categoryRepository.retrieveSubcatogories(categoryNm.getCategoryName()); 
} 
+0

이 효과가 있습니까? – VPK

+0

예 RequestParam에서 가져옵니다. – Nimesh