我有3個JSP視圖都使用相同的JS文件(比如app.js)。如何加載Spring MVC視圖,而無需重新加載js文件
我的用戶界面位於AngularJS上,它對每個JSP視圖都有不同的控制器,並且還具有在控制器之間共享信息的自定義服務。當我加載第一個JSP時,它在app.js文件中指定的控制器將在自定義服務中保存一個值。當我加載下一個JSP文件時,app.js被重新加載,因此保存在自定義服務中的值將丟失。
有沒有辦法不重新加載JS文件?或者有更好的方法去解決這個問題嗎?
我有3個JSP視圖都使用相同的JS文件(比如app.js)。如何加載Spring MVC視圖,而無需重新加載js文件
我的用戶界面位於AngularJS上,它對每個JSP視圖都有不同的控制器,並且還具有在控制器之間共享信息的自定義服務。當我加載第一個JSP時,它在app.js文件中指定的控制器將在自定義服務中保存一個值。當我加載下一個JSP文件時,app.js被重新加載,因此保存在自定義服務中的值將丟失。
有沒有辦法不重新加載JS文件?或者有更好的方法去解決這個問題嗎?
JavaScript變量不會自動保留。當你在瀏覽器中打開一個新的URL時,你不會再次下載JS文件(它們被緩存),但是它們在新頁面中從零開始加載。這意味着所有以前的價值都會喪失,而不是偶然的,而是通過設計。
你有不同的方法來處理頁面問題之間的持久性。一種方法是服務器端通過使用會話:
的另一種方法是單頁面應用模式:
另外加載一個單一的整頁,你可以使用Windows.sessionStorage
數據客戶端存儲的時間客戶端會話 - 信用應該去@AmitParashar這個,他的答案更多的細節。
你當然也可以混合2種模式(這在實際應用中常見的做),但你必須知道,每一個頁面負載將刪除所有客戶端的JavaScript狀態
一個不太常見的模式(據我所知)是把狀態放入cookie中。這樣,就可以通過服務器共享及客戶端,但:
否客戶端會話的概念? Window.sessionStorage可以使用。 –
@AmitParashar:感謝您的注意。我已經更正了我的答案,並且讓你相信這一點。 –
謝謝謝爾:)。 –
如果您無法控制服務器,則可以將數據保存在瀏覽器的會話存儲對象中,以便在請求之間保留數據並在完成時清除它。 https://developer.mozilla.org/en/docs/Web/API/Window/sessionStorage
// Save data to sessionStorage
sessionStorage.setItem('key', 'value');
// Get saved data from sessionStorage
var data = sessionStorage.getItem('key');
// Remove saved data from sessionStorage
sessionStorage.removeItem('key')
我確實有控制服務器端,因爲這是更安全的,我使用會話屬性來保存它們。不管怎麼說,還是要謝謝你 :) – javaGirl243
要麼把價值在會話變量或靜態變量 –
也許你的問題是你想在瀏覽器中存儲必須存儲在服務器的一些信息。應該在每個請求中發送一個選項並響應此值,以便您可以在所有jsp中共享此值。 – duardito