2016-10-07 14 views
0

Spring MVC Webアプリケーションに問題があります。 categoryNameとsubCategoryNameの2つのドロップダウンがあります。 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私はAJAX呼び出しを有する上に考え区分名dropdown.Forから選択された値に応じて移入されなければなりません次のように選択変更イベントを実行します。

$("#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'からデフォルトのオプションさえも削除します。最初にこのデフォルトオプションを追加してみてください。 – VPK

+0

@VPK slctSubcat.empty();を削除しても変更はありません。その後、アラートを使用して応答を確認しました。成功関数に戻りますが、応答は空です(警告は何も表示されません) – difna

+0

コントローラメソッド '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

関連する問題