Google Guice中计算的常量

时间:2012-06-20 13:28:20

标签: java gwt dependency-injection guice gin

我希望能够使用guice / gin实现以下功能:

  1. 从服务器获取所有类型的常量(用户设置,语言等)
  2. 将这些常量绑定到"命名(###)"在guice / gin模块中
  3. 在我的代码中将它们注入到构造函数中,只有在我执行上述两个步骤后才会调用它们。
  4. 我能以某种方式这样做吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:2)

基本上有两种方法可以将数据从服务器传输到应用程序:在初始页面加载中创建RPC或设置一些全局Javascript变量。

假设这些是相对简单的常量,不需要在服务器上进行繁重的计算,最好的办法是将它们包含在页面加载中(即在引导您的GWT应用程序的HTML页面中)。例如,您的网页可能如下所示:

<html>
<head>
...
<!-- This block would be generated by your server-side templating system -->
<script>
  var globalFoo = 1234; 
</script>
...
</head>
<body>
...

然后在您的客户端中,您可以拥有一个Gin模块,其中包含以下代码片段:

@Provides
@Foo int providesFoo() {
  return getNativeFoo();
}

// Use JSNI to get the global Javascript variable.
private static native int getNativeFoo() /*-{
  return globalFoo;
}-*/;

这仍然需要您对所有绑定注释进行硬编码(即使您使用的是@Named注释)。在杜松子酒中,没有办法解决这个问题;所有绑定都需要在GWT编译时知道。

如果你 采用基于RPC的方法,那么使用Gin将无法提供太多帮助。相反,您可能希望在RPC之前构造对象,侦听RPC响应,然后根据响应进行更新。

希望能回答你的问题。