1

我的问题是在小程序中存储一些用户输入以减少用户操作。我为此使用静态字段。但我注意到,如果用户转到浏览器中的多个选项卡 - 新的“线程”(或类似的东西)开始了,我在这个新线程中的静态类是空的。也许还有另一种解决方案可以在小程序中保存一些数据?

编辑

行。更多细节。我有一个用于数字签名的小程序。用户一旦选择证书(X509Certificate)并使用它来签署所有文件。我有这样的课:

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

3 回答 3

3

使用静态字段在应用程序的各个部分之间传递用户输入是一种非常糟糕的做法。数据应存储在必要时传递的对象中。

但在您的情况下,为了在多个小程序之间共享数据,最好的解决方案是将其存储在浏览器 cookie 中java.net.CookieHandler

于 2011-07-26T08:32:44.427 回答
2

不同浏览器选项卡中的小程序是独立的程序。根据浏览器和 Java-Plugin,它们甚至可能在不同的 VM 中运行,但即使在同一个 VM 中,它们也很可能具有独立的类加载器,并且无法通过静态变量进行通信。

如果需要存储用户数据,可以使用JNLP API,例如 PersistenceService。

对于 1.6 Sun 插件,只有当您的小程序由 JNLP 加载时才可用,在 IcedTea 插件(随某些版本的 OpenJDK 一起分发)中,它也可用于由通常的小程序标记(没有 JNLP)加载的小程序。

(我不知道小程序将如何使用 CookieHandler。)

于 2011-07-26T14:57:11.947 回答
0

听起来您不应该使用静态字段来存储用户数据。另外,我认为新的浏览器选项卡不会创建新线程,因为它应该是您的小程序的一个完全独立的实例。

于 2011-07-26T08:36:08.667 回答