1

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

  1. 从服务器获取各种常量(用户设置、语言等)
  2. 将这些常量绑定到 guice/gin 模块中的“Named(###)”
  3. 将它们注入我的代码中的构造函数,这些构造函数仅在我初始化上述 2 个步骤后调用。

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

4

1 回答 1

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 响应,然后根据响应进行更新。

希望这能回答你的问题。

于 2012-07-02T20:49:15.887 回答