1

私の問題は、ユーザー操作を減らすために、いくつかのユーザー入力をアプレットに保存することです。そのために静的フィールドを使用します。しかし、ユーザーがブラウザーで複数のタブに移動すると、新しい「スレッド」(またはこのようなもの) が開始され、この新しいスレッドの静的クラスが空であることに気付きました。アプレットにデータを保存する別の解決策があるのではないでしょうか?

編集

Ok。詳細。デジタル署名用のアプレットがあります。ユーザーは一度証明書 (X509Certificate) を選択し、それを使用してすべてのドキュメントに署名します。私はこのようなクラスを持っています:

   public class CertificateContainer
    {
        private static X509Certificate certificate;
        ...
4

3 に答える 3

3

アプリケーションのパーツ間でユーザー入力を渡すために静的フィールドを使用することは、非常に悪い習慣です。データは、必要に応じて渡されるオブジェクトに格納する必要があります。

しかし、あなたの場合、複数のアプレット間でデータを共有するための最良の解決策は、それをブラウザの Cookie に保存することです。java.net.CookieHandler

于 2011-07-26T08:32:44.427 に答える
2

異なるブラウザー タブのアプレットは、独立したプログラムです。ブラウザーと Java プラグインによっては、異なる VM で実行されることもありますが、同じ VM であっても、独立したクラス ローダーを持っている可能性が高く、静的変数によって通信することはできません。

ユーザー データを保存する必要がある場合は、PersistenceService などのJNLP APIを使用できます。

1.6 Sun プラグインでは、アプレットが JNLP によってロードされた場合にのみ使用できます。IcedTea プラグイン (OpenJDK のいくつかのバージョンで配布されます) では、通常のアプレット タグ (JNLP なし) によってロードされたアプレットでも使用できます。

(CookieHandler がアプレットでどのように使用されるかはわかりません。)

于 2011-07-26T14:57:11.947 に答える
0

ユーザーデータを保存するために静的フィールドを使用すべきではないようです。また、新しいブラウザ タブで新しいスレッドが作成されるとは思いません。これは、アプレットの完全に別のインスタンスである必要があるためです。

于 2011-07-26T08:36:08.667 に答える