@RequestMappingでアノテーションされたメソッドを定期的に呼び出す方法を見つける必要があります。 プロジェクトはシンプルなようです。しかし、このシンプルさには価格が付いています。 Spring統合によるポーラーオブジェクトの使用私はファイルから定期的に更新されたデータを読み込んでいます。 Spring Pollerオブジェクトは、.propertiesファイルを読み込んで提供するinterval属性を受け入れます。定期データは、私がモデルを埋めるために、コントローラに注入@Componentに書き込まれます:同じspring mvcコントローラメソッドを定期的に呼び出す方法
@Autowired
Results results;
@RequestMapping("/")
String exposeResults(ModelMap model) {
model.addAttribute("errors", results.getErrorCount());
model.addAttribute("warnings", results.getWarningCount());
return "results";
}
モデルデータは、いくつかの基本的なHTML/JSPを経由して示しています。 私はFreeMarkerを実際に使用しています。私はSpring Bootでいくつかのチュートリアルを開始していますが、FreeMarkerにはいくつかの具体的な起動方法があります。
問題は、html(ftl)を自動リロードして、更新されたモデルと一貫性を持たせることができないことです(実際にはコンソールログに更新されます)。
@Scheduled(fixedRate =..)
は、@RequestMapping
でアノテーションされたMVCメソッドには当てはまりません。そのようなメソッドはargsを持ち、非voidを返します。 そして、私はjquery ajaxでフェッチすることを考慮しません。setInterval(function() {$("#displayarea").load(url); }, 10000);
のようなJavaScriptコードで必要な定数としてjavaプロパティを与える方法がわかりません...明らかに、${polling.interval}
のようなプレースホルダはここでは機能しません。私が間違っている?
私は `java.util.Observable-Observer 'のペアを実装しようとしましたが失敗したと告白する必要があります。
私はそれが複雑ではないはずであり、新鮮なアイデアに感謝すると感じます。 はあなたが
私は切実に必要だ
私は、プロパティーファイルが 'polling.interval = 3000'のように見える場合は、 のように '@Value $ {polling.interval} long interval'のようにJavaのプロパティに到達する方法を意味しました。 - 問題は、JavaScriptからこれらのプロパティに到達する方法でした あなたの返信を理解できませんでした。申し訳ありません。 プロジェクトにFreeMarkerモデル(Java)を導入する必要がありますか? –
あなたはあなたの質問に回答し続けます;) '@Value(" $ {polling.interval} ")long interval'はプロパティファイルから値を設定します。 – Oleg
あなたは私が何を意味していたのか不思議に思っています:) @Contueフィールド@Value( "$ {polling.interval}")long interval ' JavaScriptから$ {polling.interval}としてアクセス可能で、 'setInterval(function()#displayarea")load(url);}、$ {polling.interval}); 'のように使用できます。 –