1

アプレットの現在の UI 状態を維持するシングルトンがあります。問題は:

  1. ユーザーはブラウザでアプレット ページを開き、ドロップダウンで値を選択します。
  2. ユーザーは、純粋な HTML であるアプリケーションで別のページを閲覧します。
  3. ユーザーがアプレット ページに戻っても、UI の状態はそのままです。つまり、ドロップダウンで選択した値がそこにあります。このドロップ ダウンの状態は、アプレットの UI 状態を保存する Singleton から取得されます。
  4. ユーザーは再びアプリケーション内の純粋な HTML ページに移動します。
  5. ユーザーが再びアプレット ページに戻ると、今度は状態が失われ、デフォルト レイアウトにリセットされます (ドロップ ダウンにはデフォルト値が含まれます)。

私が見つけた理由は、ユーザーが 2 回目にアプレットに戻ったときに、UI 状態を保存するシングルトンがその状態を保持できないためです。すべての静的変数はデフォルト値にリセットされます。

このリンクのように、アプレットはステートレスである必要があることがわかりました。

それは言う:

クラス・ローダー・キャッシュによって取得されたメモリーが他の目的で必要とされない場合、アプレットに格納された値は呼び出し間で持続する可能性があります。しかし、その振る舞いに依存することはできません。一般に、アプレットはステートレスであるべきです。永続的なストレージが必要な場合は、ブラウザの Cookie を使用してください。

この場合、アプレット用のシングルトンを作成するにはどうすればよいでしょうか? UI の状態全体をブラウザーの Cookie に保存できません。

4

1 に答える 1

1

これにはいくつかのオプションがあります:

  1. 現在の状態を保存するためにサーバーに http 要求を送信し、ajax 呼び出しを使用し、アプレットでの http 呼び出しの参照: Java から POST http 要求を (単純に) 生成してファイルのアップロードを行う方法

  2. Cookie を使用して状態を保存します。参照は次のとおりです。Java アプレット (署名されていない) は Cookie を作成/読み取りできますか?

  3. Jstorage を使用してブラウザのローカル ストレージに状態を保存するには、javascript 関数を呼び出します。参照: http://www.jstorage.info/

Jstorage の使用は非常に簡単です。「contador」というカウンターを格納するこの例を見てください。

<html><head>
<script src="jquery.min.js"></script>
<script src="jstorage.js"></script>
<script>
    function init() {
        var contador = $.jStorage.get("contador");
        $('#you').html('contador=' + contador);
        contador++;
        $.jStorage.set("contador", contador);
    }
</script>
</head>
<body onload="init()">
    <div id="you"></div>
</body>
</html>
于 2013-02-16T01:50:59.293 に答える