将参数传递给GWT模块

时间:2010-08-26 10:08:03

标签: java javascript html gwt

我的GWT模块UI只是单个按钮(,如AddThis / ShareThis Sharing Button ),所有其他内容都在JS Popup面板中完成。 Id 被指定为全局JS变量(即myConfig.id = 22 )并使用JSNI方法在 $ wnd.myConfig.id <中获取该ID / em>的)。

注意:还有另一种方式传递参数,即通过设置

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

&安培;在GWT代码中

RootPanel rootPanel = RootPanel.get("gwtRootPanel");
System.out.println("Passed Value " + DOM.getElementAttribute(rootPanel.getElement(), "alt"));

这两种方式都适用于页面中只有1个按钮,现在我没有看到任何此选项可用于在一个HTML中添加多个按钮(像博客帖子列表中的每个博客的相同共享按钮)网页..

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

如果使用第二种方式,
不能使用相同的&lt; div id ='gwtRootPanel'&gt; ...

任何提示或解决方案?

干杯,
Nachiket

1 个答案:

答案 0 :(得分:1)

在同一页面上使用多个入口点可能不是一个好主意。而是使用单个入口点并在页面上放置您希望它进行交互的标记。

因此,如果你想在某些div中粘贴一个GWT按钮小部件,你可以像这样实现你的html:

<div id="marker1"></div>
<!-- more stuff -->
<div id="marker2"></div>
<!-- etc. -->

然后,单个GWT应用程序的入口点将从这样的循环中插入自己的按钮:

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作为上下文来获取页面中的更多数据。