Google Guice中的计算常量



我希望能够使用guide/gin实现以下目标:

  1. 从服务器获取所有类型的常量(用户设置、语言等(
  2. 将这些常量绑定到guide/gin模块中的"Named(###(">
  3. 将这些注入到我的代码中的构造函数中,这些构造函数只有在我初始化上面的两个步骤之后才被调用

我能以某种方式做到这一点吗?如果是,怎么做?

基本上有两种方法可以将数据从服务器获取到应用程序:要么进行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响应,然后根据响应进行更新。

希望这能回答你的问题。

最新更新