Java 将参数传递给GWT模块

Java 将参数传递给GWT模块,java,javascript,html,gwt,Java,Javascript,Html,Gwt,我的GWT模块UI只有一个按钮(比如AddThis/ShareThis共享按钮),所有其他的东西都是在JS弹出面板中完成的Id被指定为全局JS变量(即myConfig.Id=22),并使用JSNI方法($wnd.myConfig.Id)在GWT模块中获取该Id 注意:还有另一个way pass参数,它是通过设置 <div id='gwtRootPanel' alt='6323'> </div> <script type="text/javascript" langu

我的GWT模块UI只有一个按钮(比如AddThis/ShareThis共享按钮),所有其他的东西都是在JS弹出面板中完成的Id被指定为全局JS变量(即myConfig.Id=22),并使用JSNI方法($wnd.myConfig.Id)在GWT模块中获取该Id

注意:还有另一个way pass参数,它是通过设置

<div id='gwtRootPanel' alt='6323'> </div>
<script type="text/javascript" language="javascript" src="com.test.gwt.Common/com.test.gwt.Common.nocache.js"></script>

这两种方法只适用于页面中的一个按钮,现在我看不出在一个HTML页面中添加多个按钮(如博客文章列表中的每个博客都有相同的共享按钮)的任何选项是可行的

如果使用第一种方式,
如何为同一个GWT编译文件获取不同的值

如果使用第二种方式,
无法使用相同的

有什么提示或解决方案吗?

干杯,

Nachiket

在同一页面上使用多个入口点可能不是一个好主意。取而代之的是使用一个单一的入口点,并在您希望页面交互的地方放置标记

因此,如果您想在某些div中粘贴GWT按钮小部件,您可以实现如下html:

<div id="marker1"></div>
<!-- more stuff -->
<div id="marker2"></div>
<!-- etc. -->
public void onModuleLoad() {
  int i = 1;
  do {
    String id = "marker" + i;
    RootPanel rp = RootPanel.get(id);
    if (rp == null) {
      break;
    }
    rp.add(new MyWidget(getContextData(id)));
    i++;
  } while (true);
}

native String getContextData(String id) /*-{
  return $wnd.myConfig[id];
}-*/;

因此,本例将遍历html以查找匹配的ID,然后将小部件作为子元素插入其中。此外,它还使用id作为上下文来获取页面中的更多数据。

已经做了类似的操作。。设置外部JS配置变量,该变量提供DIV id的数组。。但您的解决方案更简单、更优雅。谢谢你的回答。:)
public void onModuleLoad() {
  int i = 1;
  do {
    String id = "marker" + i;
    RootPanel rp = RootPanel.get(id);
    if (rp == null) {
      break;
    }
    rp.add(new MyWidget(getContextData(id)));
    i++;
  } while (true);
}

native String getContextData(String id) /*-{
  return $wnd.myConfig[id];
}-*/;