SparkJava网站的动态更新

时间:2017-08-29 19:06:30

标签: java jetty spark-java java-websocket

我使用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是否也是正确的方法?

1 个答案:

答案 0 :(得分:1)

我设法以某种方式解决了我的问题。

Tha Java代码如上所述,加上onModuleFound方法我更新了我存储在控制器类中的模块的静态列表(而不是getModules方法中的变量)。

然后在站点代码中我添加了AJAX调用,每三秒更新一次这个特定的div。这会导致调用getModules,并将最新的模块列表设置为我的站点模型。

不确定这是否是最佳解决方案,但它对我来说非常好。