2016-08-09 15 views
1

私はすべて同じJSファイル(たとえばapp.js)を使用する3つのJSPビューを持っています。jsファイルをリロードせずにSpring MVCビューを読み込む方法

My UIはAngularJS上にあり、JSPビューごとにコントローラが異なり、コントローラ間で情報を共有するカスタムサービスもあります。最初のJSPをロードすると、app.jsファイルで指定されたコントローラがカスタムサービスに値を保存します。次のJSPファイルを読み込むと、app.jsがリロードされ、カスタムサービスに保存された値が失われます。

JSファイルを再ロードしない方法はありますか?それともこれについてもっと良い方法がありますか?

+0

いずれか多分あなたの問題はあなたがブラウザにサーバーに保存されている必要がありますいくつかの情報を保存しようとしているあるセッション変数や静的変数 –

+0

に値を入れます。 1つのオプションは、各リクエストを送信してこの値に応答する必要があるため、この値をすべてのJSPで共有できます。 – duardito

答えて

0

Javascript変数は自動的には保存されません。あなたのブラウザで新しいURLを開くと、JSファイル(キャッシュされています)をもう一度ダウンロードすることはありませんが、その新しいページにはの最初からがロードされます。これは、すべての以前の値が偶然ではなく設計によって失われることを意味します。

ページの質問間でこの永続性を処理する方法は異なります。一つの方法は、セッションを使用して、サーバー側である:

  • JS部がスプリングMVCコントローラは、セッションで
  • 他のビュー(JSP)ことを置く
  • リクエストのパラメータとして保存する値を送信します又はコントローラ(スプリング)が保存された値にアクセスし、応答

別の方法は、単一ページのアプリケーション・パターンでそれを渡す:

  • あなただけのみ、それはまた、あなたがの期間ストアデータクライアント側にWindows.sessionStorageを使用することができDOM

を変更するために、直接処理要求を送信し、サーバー

  • JavaScriptから1つの完全なページをロードクライアントセッション - このクレジットは@AmitParasharに行く必要があります。あなたはもちろんの2つのパターンを混在させることができます

    (これは一般的に実際のアプリケーションで行われている)、しかし、あなたはすべてのページの負荷が少ない一般的なパターン(私の知る限りは)にあるjavascriptの状態

    すべてのクライアントが消去されますことを知っている必要があります状態をクッキーに入れてください。

    • あまりにも簡単に
  • +1

    いいえクライアント側のセッションの概念? Window.sessionStorageを使用できます。 –

    +0

    @AmitParashar:気づいてくれてありがとう。私はそれであなたの信用を与える私の答えを修正しました。 –

    +0

    Serge :)ありがとう。 –

    1
    を偽造することができますので、あなたは、サーバー側のセキュリティのためにそれを使用することはできません
  • 4kのサイズに制限されている:サーバーとクライアントで共有することができますが、そのよう

    サーバーを制御できない場合は、ブラウザーのセッション記憶域オブジェクトにデータを保存して、完了後にデータを要求間で保持してクリーンアップすることができます。 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') 
    
  • +0

    私はサーバー側の制御があり、より安全ですので、私はそれらを保存するためにセッション属性を使用しています。とにかくありがとう :) – javaGirl243

    関連する問題