2016-10-07 278 views
0

我的Spring MVC Web應用程序中存在一個問題。我有兩個下拉菜單: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代碼:

<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> 

下拉subCategoryName已經根據來自類別名稱dropdown.For選擇的值,我認爲在具有AJAX調用來填充在選擇更改事件如下。

$("#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"); 
     } 
    }); 

}); 

這Ajax調用將解決其中包含了從數據庫中選擇相關的子類別列表中查詢以下控制器方法。

//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'中的默認選項。嘗試先添加這個默認選項,如果它工作正常,然後檢查你的respose。 – VPK

+0

@VPK雖然我刪除了'slctSubcat.empty();'然後我使用alert檢查了響應。它轉到成功函數,但響應是空的(alert不顯示任何內容) – difna

+0

然後,您必須檢查Controller方法getSubcatList()是否返回正確的值。也許你從'categoryRepository.retrieveSubcatogories(categoryNm.getCategoryName())'獲得空值;' – 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

相關問題