SparkJava网站动态更新
Dynamic update of SparkJava website
我用 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 class 中完成。无论如何,WebSockets 是执行此操作的正确方法吗?
我设法以某种方式解决了我的问题。
Tha Java 代码如上,加上 onModuleFound
方法我更新了我存储在我的控制器 class 中的静态模块列表(不是 getModules
方法).
然后在站点代码中我添加了 AJAX 调用,每三秒更新一次这个特定的 div
。这导致调用 getModules
,并将最新的模块列表设置到我站点的模型中。
不确定这是否是最佳解决方案,但对我来说效果很好。
我用 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 class 中完成。无论如何,WebSockets 是执行此操作的正确方法吗?
我设法以某种方式解决了我的问题。
Tha Java 代码如上,加上 onModuleFound
方法我更新了我存储在我的控制器 class 中的静态模块列表(不是 getModules
方法).
然后在站点代码中我添加了 AJAX 调用,每三秒更新一次这个特定的 div
。这导致调用 getModules
,并将最新的模块列表设置到我站点的模型中。
不确定这是否是最佳解决方案,但对我来说效果很好。