2010-08-26 6 views
2

Пользовательский интерфейс модуля GWT - это только одна кнопка (, например, AddThis/ShareThis Sharing Button), а все остальные вещи выполняются на панелях JS Popup. Id указан как глобальная переменная JS (, т. Е. MyConfig.id = 22) и получение этого идентификатора в модуле GWT с использованием метода JSNI ($ wnd.myConfig.id).Передача параметра в модуль GWT

ПРИМЕЧАНИЕ: Существует также другой способ параметр проход, который является установка

<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")); 

Оба способа отлично работает только одна кнопка в page, теперь я не вижу, чтобы какая-либо из этих возможностей была возможной для добавления нескольких кнопок (как одна и та же кнопка Share для каждого блога в Сообщения в блоге список) в одной HTML страницы ..

Если используется 1-й путь,
Как получить различные значения для той же GWT скомпилированный файл?

При использовании 2-й путь,
не может использовать тот же < Div ID = 'gwtRootPanel'> ...

Любой намек или решение?

Cheers,
Nachiket

ответ

1

Это, вероятно, не очень хорошая идея использовать несколько точек входа на той же странице. Вместо этого используйте одну точку входа и отметьте маркеры на своей странице, где вы хотите, чтобы она взаимодействовала.

Так что, если вы хотите, чтобы воткнуть кнопку 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 подберет идентификаторы, а затем вставлять виджеты в качестве дочерних элементов там. Кроме того, он использует идентификатор в качестве контекста для получения еще нескольких данных, находящихся на странице.

+0

Сделал что-то подобное уже. Задайте внешнюю переменную конфигурации JS, которая предоставляет массив с идентификатором DIV. Но ваше решение более простое и элегантное. Спасибо за ответ. :) – Nachiket

Смежные вопросы