2010-08-26 4 views
2

Mon interface utilisateur de module GWT est un seul bouton (comme AddThis/ShareThis Sharing Button), et tout le reste est fait dans les panneaux JS Popup. Id est spécifié en tant que variables globales JS (à-dire myConfig.id = 22) et d'obtenir que le module GWT Id en utilisant la méthode JSNI ($ wnd.myConfig.id).Passer le paramètre au module GWT

NOTE: Il y a aussi un autre paramètre passe à sens unique, qui est en mettant

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

& dans le code GWT

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

deux sens fonctionne très bien pour seulement 1 bouton page, Maintenant, je ne vois aucune de cette option possible pour ajouter plusieurs boutons (comme même bouton Partager pour chaque blog dans Liste des blogs post) dans une page HTML ..

Si l'aide 1er chemin,
Comment obtenir des valeurs différentes pour même fichier compilé GWT?

Si vous utilisez 2 façon,
Impossible d'utiliser la même < div id = 'gwtRootPanel'> ...

Toute velléité ou solution?

Cheers,
Nachiket

Répondre

1

Il est probablement pas une bonne idée d'utiliser plusieurs points d'entrée sur la même page. Au lieu de cela, utilisez un seul point d'entrée et placez des marqueurs sur votre page où vous voulez interagir.

Donc, si vous voulez coller un widget bouton GWT dans certaines divs, vous pouvez mettre en œuvre votre code html comme ceci:

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

Ensuite, le point d'entrée à votre seule application GWT insérerions ses propres boutons d'une boucle comme ceci:

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]; 
}-*/; 

Ainsi, cet exemple itérer le code html correspondant à la recherche d'ids puis insérez des widgets comme éléments enfants là-bas. De plus, il utilise l'identifiant comme contexte pour obtenir plus de données dans la page.

+0

A déjà fait quelque chose de similaire .. Définir la variable de configuration JS externe qui fournit un tableau d'ID DIV .. Mais votre solution est plus simple et élégante. Merci d'avoir répondu. :) – Nachiket

Questions connexes