Jqgrid既不从dataUrl调用spring控制器,也不在buildSelect中显示alert以填充下拉列表

时间:2014-12-30 10:20:31

标签: javascript jquery spring spring-mvc jqgrid

我是这个jquery的新手,所以iam陷入了我必须从url (/ operator / vehicles / getAllVehicles) 填充下拉列表的地步。 我关注了这个网站上的很多帖子甚至很多博客但是找不到解决方案。 我有弹簧控制器,它提供了数据表中的车辆列表,现在在添加新车辆时我需要来自数据库的车辆模型,所以我创建了一个URL (/ operator / vehicles / getAllVehiclesModels) 用于检索车辆型号列表。此modllist网址由editoptions的 dataUrl 调用。现在,这个url应该由dataUrl调用,但事实并非如此。我已经打印了一些要检查的文本,但是没有调用它,也没有打印文本。

我试图从控制器返回html元素,如:

@RequestMapping(value="/getAllVehiclesModels", method=RequestMethod.GET)
public @ResponseBody String getAllVehicleModels(){
    System.out.println("Vehicles Model List size: "+vehicleModelService.getAllVehicleModels().size());
    List<VehicleModelVO> vehicleModelVOs =vehicleModelService.getAllVehicleModels();
    StringBuilder sb=new StringBuilder("<select>");
    for(VehicleModelVO vo: vehicleModelVOs){
    sb.append("<option value=" + vo.getId() + ">"+ vo.getName() + "</option>"); 
    }
    sb.append("</select>");
    System.out.println("Final String select: "+sb.toString());

    return sb.toString();
}

这没用,所以我只返回了VehicleModelsVO列表,即返回列表

我的Jsp页面:

  jQuery("#vehicles_list").jqGrid({
      url: '<c:url value="/operator/vehicles/getAllVehicles" />',
      datatype: "json",
      jsonReader: {repeatitems: false, root: function (obj) { return obj; }},

      colNames:['Number Plate', 'Vehicle Model', 'No Of Seats', 'Image'],
      colModel:[
        {name:'numberPlate',index:'numberPlate', width:100, editable:true, edittype:'text', editoptions: {size:25, maxlength:255}},
        {name:'vehicleModelName',
            index:'vehicleModelName', 
            width:100, editable:true, 
            edittype:'select', 
            editoptions:{dataUrl: '/operator/vehicles/getAllVehiclesModels' ,
                buildSelect: function (response) {
                    var data = typeof response === "string" ?
                                   $.parseJSON(response.responseText) : response,
                        s = "<select>";

                    s += '<option value="0">--No Manager--</option>';
                    $.each(data, function () 
                            {
                        s += '<option value=1>1</option>';
                    });
                    return s + "</select>";
                }
            }

        },
        {name:'vehicleModelNoOfSeats', index:'vehicleModelNoOfSeats'},
        {name:'image',formatter: getImage, editable:true, edittype:'file', editoptions: { enctype: "multipart/form-data"} }
      ],

      autowidth: true,
      scrollOffset: 0,
      rowNum:10,
      rowList:[10,20,30], 
      pager: jQuery('#vehicles_list_pager'),
      viewrecords: true,
      gridview: true,
      loadonce: true,
      multiselect: true
  });

在这里,我在选项中使用静态值1进行测试。

我甚至使用了返回json格式的javascript方法 - editoptions {value:getSelectValues} 和我的javascript代码:

 function getSelectValues(){
        $.getJSON("/operator/vehicles/getAllVehiclesModels", null, function(data) {
            alert("hello");
            if (data != null) {
                alert(data);
                return data;
            }
        });
    }

在上面的例子中,我的控制器以以下形式返回值:&#34; 1:one; 2:2; 3:3&#34;

0 个答案:

没有答案