在GWT应用程序中导航

时间:2011-06-10 14:50:43

标签: gwt gwt-ext

我打算构建一个Web应用程序,用户可以每周输入他们的时间,并且一直在努力探索GWT中单个页面的概念,该页面根据用户操作重新绘制数据。经过对这个网站和谷歌的大量研究后,我找到了一个我想模仿的链接,但不知道如何在GWT中进行。虽然他们的源代码可用,但我认为它不完整和完整。我从这个链接中得到了一些想法 - Multiple pages tutorial in Google Web Toolkit (GWT)但又不知道如何将其实现到工作版本中。一个小的工作样本将很好地帮助我理解和开始。

有没有人可以通过下面的链接指导我如何实现屏幕的外观和感觉,以及如何使用来自服务器的数据重新绘制内容?我需要将所有逻辑放在一个EntryPoint类中吗?我想在左侧导航面板中显示超链接,并在右侧面板中显示内容。经过几个小时的研究,我似乎完全迷失了。

http://gwt.google.com/samples/Showcase/Showcase.html#!CwHyperlink

非常感谢你的帮助。

此致 SONU。

2 个答案:

答案 0 :(得分:0)

单页应用程序布局实际上很容易实现。

您要做的第一件事是使用GWT layout panels定义一般布局。对于您的布局,我建议使用DockLayoutPanel

Content content = new Content();
Button switchContent = new Button(content);
Navigation navigation = new Navigation();
navigation.add(switchContent);

DockLayoutPanel pageLayout = new DockLayoutPanel(Unit.EM);
p.addWest(new HTML(navigation), 7.5);
p.add(new HTML(content));

此处,导航面板的宽度将固定,而内容将占用剩余空间。您必须传递按钮(或其他一些小部件)的引用,该按钮用于切换内容区域,将按钮添加到导航区域,依此类推。

把它放到一个班级,例如叫MasterPageFactory

public class MasterPageFactory {
    private MasterPageFactory() {}

    public static MasterPage newInstance() {

       Content content = new Content();
       Button switchContent = new Button(content);
       Navigation navigation = new Navigation();
       navigation.add(switchContent);

       DockLayoutPanel masterPage = new DockLayoutPanel(Unit.EM);
       masterPage.addWest(new HTML(navigation), 7.5);
       masterPage.add(new HTML(content));

       return masterPage;
    }
}

现在,在EntryPoint课程中,请致电工厂:

RootLayoutPanel.get().add(MasterPageFactory.newInstance());

这个例子可以让你有个主意。其他选项可能是使用像Guice或Command模式这样的DI框架。

答案 1 :(得分:0)

你的问题是混淆了几个概念。如果您希望用户单击看起来像链接的内容,并且在响应中,应用程序会向服务器发送请求并显示与其所在页面不同的页面,并且该页面包含刚刚来自的页面服务器,然后你想要一个完全正常的锚或表单提交按钮。 GWT不需要任何特殊或奇怪的东西。

您引用的展示示例允许用户单击看起来像链接的内容,看起来它加载了一个新页面,甚至让后退按钮按预期工作,但实际上并未点击服务器以获取新页面或新数据。