2016-10-07 214 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

相关问题