我一直在研究GWT几天,我有些困惑。
我来自PHP / JSP背景,所以当我想创建一个有多个页面的网站时,我只想为每个页面创建一个PHP页面,然后让用户选择要查看的内容。
现在我正在研究GWT,我真的不明白这是怎么做到的?
让我们说我希望我的网站有三个页面(index.html,help.html,contact.html),当加载GWT应用程序时,调用onModuleLoad()方法。那么我如何编写每个单独的页面小部件,然后只使用这一个方法?
查看在Eclipse中创建的示例GWT应用程序,将创建一个HTML页面。如果只有一个onModuleLoad()方法,我将如何创建具有多个页面的应用程序?
答案 0 :(得分:2)
GWT可以用于Chris Lercher和nvcleemp提到的Web 2.0,客户端应用程序方式,或者您可以将它与更传统的页面查看/重新加载模型结合使用。如果您只是想将DHTML功能注入到现有的静态页面中,您可以查找注入的特定元素ID,或者在调用onModuleLoad()时可以读取javascript嵌入式配置变量,以确定您所处的状态/模式以及您应该运行的GWT客户端功能类型。
例如,使用不同的注入点:
第1页:
<html>
<head>
...
<script type="text/javascript" src="yourmodule.nocache.js"></script>
...
</head>
<body>
...
<div id="injectMode1"></div>
...
</body>
</html>
第2页:
<html>
<head>
...
<script type="text/javascript" src="yourmodule.nocache.js"></script>
...
</head>
<body>
...
<div id="injectMode2"></div>
...
</body>
</html>
您的GWT EntryPoint:
@Override
public void onModuleLoad() {
final Panel mode1 = RootPanel.get("injectionMode1");
if (mode1 != null) {
mode1.add(new ModeOneWidget());
}
final Panel mode2 = RootPanel.get("injectionMode2");
if (mode2 != null) {
mode2.add(new ModeTwoWidget());
}
}
修改强>
使用javascript变量,在每个要嵌入GWT功能的页面上,您可以执行以下操作:
页面foo:
<html>
<head>
...
<script type='text/javascript'>
var appMode="mode1";
</script>
<script type="text/javascript" src="yourmodule.nocache.js"></script>
...
</head>
...
您的GWT EntryPoint:
private static final native String getAppMode()/*-{
return $wnd.appMode;
}-*/;
@Override
public void onModuleLoad() {
String appMode = getAppMode();
if(appMode != null){
if(appMode.equals(MODE1)){
...
}
...
}
}
答案 1 :(得分:0)
GWT使用JavaScript来修改页面内容。所以你不加载一个新的页面[*]。
使用GWT,您不再需要服务器来创建动态HTML内容。它是在客户端动态创建的(使用静态JavaScript代码)。当您需要从服务器加载某些内容时,只需加载数据对象(采用JSON或XML格式,或使用GWT-RPC)。然后,客户端可以使用此数据构建HTML片段(设置innerHTML)或DOM对象以修改浏览器的DOM树。
使用GWT,您不必手动构建这些代码段:您可以使用Widgets和UiBinder(客户端HTML模板,使用GWT标记和动态参数进行增强)。
[*]有一些特殊情况(例如,如果您有https登录页面,而应用程序的其余部分可能使用http),您在其中加载新页面,但这意味着您的其他页面根本不使用GWT,或者您为它创建单独的GWT模块。当然,您可以在这些模块之间共享一些Java类。
答案 2 :(得分:0)
GWT用于构建应用程序,例如谷歌阅读器或Gmail:这意味着只有“一个”页面。您可以在该页面内有一个显示联系信息的“窗口”和一个显示帮助信息的“窗口”。当用户点击相应的链接时,您会显示“窗口”