如何从GWT主页中读取属性?

时间:2010-12-04 01:13:23

标签: gwt properties

从GWT主页中读取属性的最佳方法是什么?

我正在尝试找到一种将属性嵌入主页并从Java访问它们的简单方法。

似乎Dictionary似乎是推荐的方式,但它有点脆弱,因为您的词典必须存在于主机页面中,或者它与MissingResourceException错误。同样,如果您请求的密钥不存在,Dictionary.get()将抛出资源错误。

我正在编写一个库,我更喜欢一个更强大的解决方案,如果用户没有指定字典或密钥,它就不会出错。我应该只捕获Dictionary引发的异常并返回null吗?有没有更强大的方法来做到这一点?

编辑:目前,我正在使用以下内容:

protected Dictionary dict;

public ClientConfiguration(String configName)
{
    try
    {
        dict = Dictionary.getDictionary(configName);
    } catch (MissingResourceException e)
    {
        dict = null;
    }
}

public String getString(String key)
{
    return dict == null ? null : dict.keySet().contains(key) ? dict.get(key) : null;
}

1 个答案:

答案 0 :(得分:3)

我想说,你的解决方案已经非常强大了。抓住它是绝对可以的 - 没有重新抛出 -

  • 特定的异常(MissingResourceException)
  • 您希望发生的
  • (资源可能丢失),
  • 并且只会在您期望的情况下发生(捕获NullPointerException会很糟糕,因为该异常可能有很多原因)。

您甚至可以稍微更改一下getString()方法:

public String getString(String key) {
  try {
    return dict == null ? null : dict.get(key);  

  } catch (MissingResourceException e) {
    return null;
  }
}

这应该使该方法几乎快两倍,因为您将额外的调用保存到dict.keySet().contains(key),这大约需要dict.get(key)