我有一个 Spring Web 应用程序,我在其中使用 Web 服务加载 UI 数据。我使用的数据库是 H2,我发布了一个示例服务,我使用它填充一个select
元素。下面是春季服务。
@RequestMapping(value = "/getAllOutlets", method = RequestMethod.GET)
public @ResponseBody ModelMap loadOutlets(){
List<Outlet> outlets = dataViewService.getAllOutlets();
ModelMap model = new ModelMap();
model.put("outlets", outlets);
return model;
}
此服务由以下 get 调用使用。
function getOutlets(){
var element = $('#outlets select');
element.empty();
$.get('/getAllOutlets',function(response){
for(var i = 0; i < response.outlets.length; i++ ){
element.append("<option id="+ response.outlets[i].outletId + " >" + response.outlets[i].name + "</option>" );
}
});
}
当我运行 Web 应用程序时,数据被加载到 UI 中,没有任何挂起。但是当我刷新页面时,数据不会加载到 UI 中。我检查了萤火虫,我可以看到所有的调用前面都有加载图标。(没有添加断点)。我注意到的另一件事是,只有需要数据库访问的服务在第二次调用中被挂起。例如,我有一个读取系统属性文件并发送值的服务。当所有其他数据库所需的服务都被挂起时,它不会被挂起。下面是萤火虫中调用的屏幕截图。( 希望你能理解 )
更新 :
function populateUIMajorGroups(){
var uiElement = $('.item-group-button').first();
$.get('/getAllMajorGroups', function(data){
if(data.majorGroups.length != 0){
$('.panel_list').empty();
uiElement.empty();
}
for(var i = 0; i < data.majorGroups.length; i++){
var clone = uiElement.clone();
clone.append("<h3>" + data.majorGroups[i].description + "</h3>");
clone.attr("id", data.majorGroups[i].majorGroupId);
$('.panel_list').append(clone);
}
},'json');
}
上面的代码运行完美,没有任何挂起!如您在屏幕截图中所见!为什么这只发生在 GET 方法上?