我使用Spark famework开发了一个网络应用程序。在其中一个网站上,我想启用动态内容加载。我的意思是在Java控制器中我搜索服务器中的一些信息,我想在搜索完成时更新网站,例如:
// this is called by get("/module", (req, resp)-> ...);
public static ModelAndView getModules(Request req, Response res) {
Map<String, Object> model = new HashMap<String, Object>();
List<Module> modules = new ArrayList<>();
model.put("modules", modules);
lookForModules(this);
return new ModelAndView(model, "pathToSiteSource");
}
private lookForModules(Listener listener){
// modules search in the background thread
// when any module is found I inform the listener;
// different modules can be found in various times
}
public void onModulesFound(List<Module> modules){
// I want to update the site using the modules that I got
}
我读到WebSockets是一种方法,但Spark网站上的WebSockets示例使用AJAX调用,我的搜索必须在我的java类中完成。 WebSockets是否也是正确的方法?
答案 0 :(得分:1)
我设法以某种方式解决了我的问题。
Tha Java代码如上所述,加上onModuleFound
方法我更新了我存储在控制器类中的模块的静态列表(而不是getModules
方法中的变量)。
然后在站点代码中我添加了AJAX调用,每三秒更新一次这个特定的div
。这会导致调用getModules
,并将最新的模块列表设置为我的站点模型。
不确定这是否是最佳解决方案,但它对我来说非常好。