根据Spring MVC中的另一个下拉列表填充下拉列表

时间:2016-10-07 04:47:09

标签: ajax spring jsp spring-mvc dropdown

我的Spring MVC Web应用程序存在问题。我有两个下拉列表:categoryName和subCategoryName。 使用数据库值填充categoryName下拉列表。代码如下所示,它可以正常工作。

控制器方法:

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

下拉子类别名称必须根据从categoryName下拉列表中选择的值进行填充。为此我想在选择更改事件上进行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代码如下所示

但我没有填充subCategory Dropdown。有人可以告诉我这个吗

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

1 个答案:

答案 0 :(得分:0)

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

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