使用ajax,jsp,sprigs,hibernate级联下拉列表

时间:2016-03-09 11:04:27

标签: ajax hibernate jsp spring-mvc

我有区域和部门的两个下拉列表,当我选择区域时,那么从数据库对应区域的部门将存储在Set中,我想将该Set值返回到ajax并在下拉列表中填充它。 我在控制器中获得了价值,但我无法在部门下拉列表中填充这些值。它始终打印错误警告消息,无法输入成功方法。

Script on JSP Page

<script type="text/javascript">
    function getDept(district)
    {
   
    var district=$('#district').val();
    //alert(district);
       $.ajax({ 
           type: "POST",     
           url: "/StateAttendancePortal/getDept.html",
           data: "district="+district,
           success: function(response){
          // we have the response
          if(response.status == "SUCCESS"){
              options = '';
              options += '<option> Please select ... </option>';
              for(i =0 ; i < response.result.length ; i++){
                  options += '<option>' + response.result[i] + '</option>';
                 
              }
              selectOption=options;
             $('#dept').html(options);
             
          }else{
              errorInfo = "";
              for(i =0 ; i < response.result.length ; i++){
                  errorInfo += "<br>" + (i + 1) +". " + response.result[i];
              }
              $('#error').html("Please correct following errors: " + errorInfo);
              $('#info').hide('slow');
              $('#error').show('slow');
          }         
        }, 
        error: function(e){ 
          alert('Error: ' + e); 
        } 
      }); 
    }
  </script>
JSP PAGE

<table>
<tr>
<td>District: 
<select name="district" id="district" onchange="getDept(this.value)">
<option selected="selected">Please select ...</option>   
<c:forEach items="${list}" var="listv" > 
<option>${listv}</option>
</c:forEach>
</select>
</td>
<td></td>
<td>Department:
<select id="dept"  >
<option>Select Department</option>                
</select>
</td>
</tr>
</table>

    控制器

@RequestMapping(value="/getDept",method=RequestMethod.POST )
public @ResponseBody Set<String> getDept(@ModelAttribute(value="district") String deg_code, BindingResult result
        ,HttpServletRequest request)
        throws ServletException, IOException {


    Set<String> listOfDeptEmp = new HashSet<String>();

    //JsonResponse res = new JsonResponse();
    listOfDeptEmp.clear();
    deg_code=request.getParameter("district");
    if(!result.hasErrors())
    {
        listOfDeptEmp =adminService.fetchDeptDist(deg_code);
        /*for(String l:listOfDeptEmp) 
        {
            System.out.println("Control"+l);

        }*/
        System.out.println("Control"+listOfDeptEmp);
        /*res.setStatus("SUCCESS");
        res.setResult(listOfDeptEmp);*/

    }
    else
    {
        /*res.setStatus("FAIL");
        res.setResult(result.getAllErrors()); */
    }

    return listOfDeptEmp ;

}

1 个答案:

答案 0 :(得分:0)

你的类路径中有jackson jar吗?否则添加它。它将返回json数据。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>

这有助于您将object转换为json

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(object);

点击similar post此处。