Frage

Mein Problem ist es, einige Benutzereingaben in Applet zu speichern, um die Benutzeroperationen zu reduzieren. Ich benutze dafür statische Felder. Aber ich bemerkte, dass, wenn der Benutzer im Browser mehrere Registerkarten geht - THR NEUER "Thread" (oder ähnliches), und meine statische Klasse in diesem neuen Thread ist leer. Vielleicht gibt es eine andere Lösung, um einige Daten im Applet zu speichern?

Bearbeiten

OK. Mehr Details. Ich habe ein Applet für die digitale Signatur. Benutzer einmal auswählen Zertifikat (x509Certificate) und verwenden Sie es für alle Dokumente für Zeichen. Ich habe eine Klasse wie diese:

   public class CertificateContainer
    {
        private static X509Certificate certificate;
        ...
War es hilfreich?

Lösung

Applets in verschiedenen Browser -Registerkarten sind unabhängige Programme. Abhängig vom Browser und Java-Plugin können sie sogar in einem anderen VM laufen, aber selbst wenn sie in derselben VM-Laderin unabhängiger Klassenlader haben und nicht in der Lage sind, durch statische Variablen zu kommunizieren.

Wenn Sie Benutzerdaten speichern müssen, können Sie die verwenden JNLP -API, zum Beispiel der Persistencesservice.

Mit dem 1.6 -Sun -Plugin ist dies nur verfügbar, wenn Ihr Applet von JNLP geladen wurde, im IcedTea -Plugin (verteilt mit einigen Versionen von OpenJDK) auch für Applets verfügbar ist, die mit dem üblichen Applet -Tag (ohne JNLP) geladen wurden.

(Ich habe keine Ahnung, wie ein CookieHandler von Applets verwendet wird.)

Andere Tipps

Die Verwendung statischer Felder zum Übergeben der Benutzereingabe zwischen Teilen einer Anwendung ist a Sehr schlechte Praxis. Die Daten sollten in Objekten gespeichert werden, die bei Bedarf weitergegeben werden.

In Ihrem Fall ist es jedoch die beste Lösung, Daten zwischen mehreren Applets zu teilen, um sie in Browser -Cookies zu speichern java.net.CookieHandler

Es hört sich so an, als ob Sie keine statischen Felder zum Speichern von Benutzerdaten verwenden sollten. Ich glaube auch nicht, dass ein neuer Browser -Registerkarte einen neuen Thread erstellen würde, da er eine völlig separate Instanz Ihres Applets sein sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top