GWT项目间的沟通

时间:2009-09-09 10:26:11

标签: java css gwt stylesheet webclient

我们有一个大型GWT项目和许多小型GWT子项目 基本上,大型控制器项目调用较小的项目 通过许多手段,例如一些被纳入页面中显示的iframe, 通过单击URL并将项目打开到新窗口来显示一些。

要求是动态改变Css,这在主项目中是可能的, 通过简单地改变包含样式表url的链接标记的href

是否有可能将这一变化传播给子项目? 或者用更广泛的术语提问, 如何实现GWT中的项目间沟通?

2 个答案:

答案 0 :(得分:2)

如果不同GWT应用程序的域相同,浏览允许您跨IFrame调用Javascript代码。

使用JSNI,您可以在窗口对象上注册回调到GWT应用程序的方法,并使用JSNI,其他项目可以调用此方法。

答案 1 :(得分:1)

如果所有应用都来自同一个域,您可以将样式表的名称存储在Cookie中。然后,每个应用程序都会使用cookie来选择合适的样式表。

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