2009-09-09 10 views
1

Nous avons un grand projet GWT et de nombreux sous-projets GWT petits essentiellement le grand projet de contrôleur invoque les petits projets par de nombreux moyens tels que certains sont incorporés dans les iframes qui apparaissent dans la page, certains sont montré en cliquant sur une URL et en ouvrant le projet dans une nouvelle fenêtre.GWT communication inter projet

L'exigence est de changer la Css à la volée, cela est possible dans le projet principal, en changeant simplement, à la volée, le href de la balise link contenant url stylesheet

est-il possible de se propager ce changement aux sous-projets aussi? ou de demander en termes plus généraux, comment puis-je réaliser la communication entre projets dans GWT?

Répondre

2

Un parcours vous permet d'appeler du code Javascript sur des IFrames si les domaines des différentes applications GWT sont les mêmes. En utilisant JSNI, vous pouvez enregistrer des méthodes sur l'objet window qui rappelle dans l'application GWT et en utilisant JSNI, l'autre projet peut appeler cette méthode.

+0

 good solution, working on it. I have achieved one thing, the parent can initially notify the child via url parameters since it is indeed loading it in iframes. However, for refreshing/change notification, i am thinking of implementing your approach. +1 for this great solution 

+0

Hey l'approche JSNI échoue dans un senario, autre fenêtre. J'ai un module de connexion qui, en cas de succès, change l'URL de la page en un autre module gwt. dans ce cas, la valeur de la variable globale javascript est perdue [est logique car la fenêtre elle-même a changé, alors window.variable n'est plus dans la portée], que dois-je faire dans ce cas? utiliser un cookie? –

+0

Le cadre principal peut écouter les événements de rechargement et réenregistrer le rappel. le client peut mettre une méthode à disposition lorsqu'il est chargé, que le cadre principal peut appeler. Il y a plein d'options. –

1

Si toutes les applications sont servies à partir du même domaine, vous pouvez stocker le nom de la feuille de style dans un cookie. Chaque application utilise ensuite le cookie pour sélectionner la feuille de style appropriée.

String theme = Cookies.getCookie("THEME"); 
if (theme == null) { 
    theme = "default"; 
} 

Element e = DOM.createElement("link"); 
DOM.setElementProperty(e, "rel", "stylesheet"); 
DOM.setElementProperty(e, "href", GWT.getModuleBaseURL() + currentTheme + 
    ".css"); 
DOM.appendChild(getHead(), e); 

private native Element getHead() /*-{ 
    return $doc.getElementsByTagName('head')[0]; 
}-*/; 
+0

salut, je pense que vous avez mal interprété la question, les cookies sont un excellent moyen de stocker quelque chose de commun, mais mon problème ici invoque, le parent devrait invoquer/notifier l'enfant de changer son Css à autre chose. Encore une bonne suggestion donc, +1 –

Questions connexes