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>
당신이 당신의 응답'data'을 확인 제발 저를 알아낼 수 있을까요? 무엇이 표시됩니까? 또한 당신은'slctSubcat.empty();'를 가지고 있는데 이것은'select'에서 디폴트 옵션을 제거 할 것입니다. 이 기본 옵션을 먼저 추가해보십시오. 제대로 작동하는 경우 다시 작성한 다음 다시 확인하십시오. – VPK
@VPK slctSubcat.empty();를 제거했지만 변경하지 않았습니다. 그런 다음 경고를 사용하여 응답을 확인했습니다. 성공 함수로 간다. 그러나 응답은 비어있다. (경고는 아무것도 표시하지 않는다.) – difna
그런 다음 컨트롤러 메소드'getSubcatList()'가 올바른 값을 반환하는지 여부를 확인해야한다. 어쩌면 당신은'categoryRepository.retrieveSubcatogories (categoryNm.getCategoryName());에서 null 값을 얻었습니다. ' – VPK