2017-08-17 30 views
1

我迫切需要我找到方法來調用與定期@RequestMapping註解的方法。 該項目似乎很簡單。但這種簡單性伴隨着價格。 通過Spring Integration的輪詢對象我正在從文件中讀取定期更新的數據。 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方法,因爲此類方法具有參數並返回非void。 我不考慮使用jQuery阿賈克斯取,因爲我沒有看到如何將Java財產飼料中像setInterval(function() {$("#displayarea").load(url); }, 10000); JavaScript代碼需要恆定的......看樣子像${polling.interval}佔位符不這裏工作。我錯了嗎?

我必須承認,我試圖執行`java.util.Observable中的觀察者」對,但失敗了。

我覺得這不應該是複雜並希望任何新意。 謝謝

回答

0

我迫切需要我找到方法來調用與定期@RequestMapping

註釋的方法,你想這樣做,爲什麼呢?!它處理服務器客戶請求如果你只是把它從服務器不會更新您的客戶端

setInterval(function() {$("#displayarea").load(url); }, 10000);

這正是你需要做的${polling.interval}是FreeMarker的語法,它將會從一個名爲pollingMap或稱爲polling對象的interval財產interval關鍵,所以你不只需要${interval}就足夠了。將它設置在freemarker模型中,使用freemarker處理具有javascript的文件,然後完成。

當然也有辦法從WebSocket例如服務器設置推送而是你需要什麼這將是矯枉過正。

+0

根據'$ {polling.interval}'我的意思是我們如何達到Java中的屬性,如 '@Value $ {polling.interval} long interval'如果屬性文件看起來像'polling.interval = 3000' - 問題是如何達到這些屬性從javascript 對不起,我不明白你的回覆 你的意思是我需要在我的項目中引入某種FreeMarker模型(Java)? –

+0

你一直在你的問題中回答你的問題;)@value(「$ {polling.interval}」)long interval'將設置屬性文件中的值。 – Oleg

+0

,你讓我想知道你是什麼意思:) 說,如果我在我的類中標記爲@Controller字段'@Value(「$ {polling.interval}」)long interval' - 是否意味着它可以像JavaScript中的$ {polling.interval}那樣訪問,並且可以像'setInterval(function(){$(「#displayarea」)。load(url);},$ {polling.interval});'' –

相關問題