所以我對Spring很新,並使用Spring Initializr創建一個新項目。我沒有任何配置.XML或類似的配置文件。我跟着這個tutorial去做事。如何在Spring MVC中動態更新模型的屬性?
我的控制器類基本上看起來像下面這樣:
@Controller
@Configuration
@EnableScheduling
public class IndexController {
@GetMapping("/")
public String index(Model m) {
m.addAttribute("Title", "New Website");
m.addAttribute("MenuOne", InformationProvider.getMenuOneLink());
m.addAttribute("MenuTwo", InformationProvider.getMenuTwoLink());
m.addAttribute("StaffNumber", InformationProvider.getNumberOfStaff());
m.addAttribute("Birthdays", InformationProvider.getBirthdaysOfToday());
return "dashboard";
}
}
這工作得很好,一切都在做什麼它應該是。不幸的是,需要在運行時更新由InformationProvider類獲取其數據的屬性。 InformationProvider正在接近網絡上的不同API,我的想法要麼是每10小時從這些API中提取數據,要麼在網站刷新時再次提取數據。
從我的理解我的方法是應該被稱爲每次有人輸入URL本地主機:8080 /。我的第一個想法基本上是10小時後刷新網站。該方法在網站刷新時調用,並且每次都返回「儀表板」,但值不會更新。要更新我的屬性,我必須重新啓動我的應用程序。我正在查看@scheduled註釋,但這並沒有真正幫助我,因爲它僅適用於返回時間爲無效並且沒有對象參數的方法。因此,調度我的方法索引不起作用,並且可能是錯誤的方式。
我在Google上搜尋關於這個話題有很多,但我真的無法找到特定問題,你只有一個模型參數,在控制器的方法,並希望以後更新的解決方案。
,這是什麼問題最好的方法?我正在檢查模型類的JavaDoc,但它不包含remove或update方法。我是否需要直接訪問模型後面的HashMap,並用現有密鑰覆蓋屬性以更新它?
編輯:
更具體有關InformationProvider類,它基本上是由返回從Java稱爲捲曲方法接受一個字符串。而已。
在此先感謝
避免在應用程序中使用靜態方法:Spring已經構建了大量的工具,允許您的應用程序根據Spring容器中的依賴關係解析進行工作。 –