私は次のJavaコードを持っているとします。どのようにFTLページを連続してレンダリングすればよいですか?
get("/", (request, response) -> {
Map<String, Object> attributes = new HashMap<>();
//attributes.put("message", "Hello World!");
return new ModelAndView(attributes, "index.ftl");
}, new FreeMarkerEngine());
これはSparkのものです。 localhost:portnumber /に移動すると、index.ftlレンダリングが表示されます。このアプリケーションでは、このアプリケーションのデータベースのデータが表示されます(ここではコード化されていないものとします)。しかし、私がindex.ftlを動的に更新したいとしましょう。別のユーザーがアプリケーションの別のインスタンスからデータベース(ここではコード化されていない)を更新し、最初のユーザーのページにindex.ftlの新しい変更を表示したかったとします。ページを再レンダリングしなくても、これはどのように行われますか?
新しいデータを10-20ミリ秒ごとにプルするJava側にタイマーを設定するだけでは不十分です。それは接続時間の大規模な浪費でもあります。データベースが更新されたことを何らかの方法でpingすることができますか?データベースのリスナーと同じですか?
問題だけでなく、再レンダリングせずに、新しく受信したデータをindex.ftlにどのようにプッシュできますか?
以内に内容を更新するように[サーバー-送信されたイベント]のようなものを意味するか(HTTPS ://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events)? – UnholySheep
または[Websockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API)([こちらのチュートリアル](https://sparktutorials.github.io/2015/11) /08/spark-websocket-chat.html)) – UnholySheep
@UnholySheepそれはまさに私が言っていることですが、代わりにJavaバックエンドのためです。 Javascriptでは、AJAXが道のりです。 Sparkフレームワークでサーバから送信されたリクエストをどのようにして作成しますか? – user41912