2014-12-26 115 views
0

我是GWT的新手。我如何通过点击按钮在客户端加载不同的静态HTML页面。已经阅读并不愿意进入RPC,框架,客户端软件包和下页:在客户端加载html页面按钮点击

best way to externalize HTML in GWT apps?

如果客户端软件包是最接近我能得到,我可能有一个很简单的例子,假设我有4个HTML页面在客户端加载,通过按钮点击可导航?

从我的理解来看,这些单独的页面可能是由UIBinders创建的 - 请纠正我,如果我错了。

我只有下面的代码来显示另一个页面点击后,这是不是我想要的方式工作。此外,它提供了一个403错误:

button.addClickHandler (new ClickHandler(){ 
      @Override 
      public void onClick (ClickEvent event){ 
       //Window.alert("Hello again"); 

       String winUrl = GWT.getModuleBaseURL(); 
       String winName = "Testing Window"; 

       openNewWindow (winName, winUrl); 
      } 
     }); 

回答

0

如果你不关心你的浏览器客户端页的状态,则是这样的:

Window.Location.replace(newUrl); 

然后你指向newUrl HTML页面可能会或可能不会加载相同的Java脚本作为当前页面。

如果您确实在意保持浏览器客户端页面的状态,并且希望避免在初始加载时加载静态页面(默认情况下您的所有页面都会一次加载),那么code splitting是您的朋友。其原理是包装的代码显示围绕一个异步调用你的新页面定义代码分裂,是这样的:

GWT.runAsync(new RunAsyncCallback() 
{ 
    @Override 
    public void onFailure(Throwable reason) 
    { 
    Window.alert("Error in fetching the split javascript for page ..."); 
    } 
    @Override 
    public void onSuccess() 
    { 
    // Code to setup and show your new static page instead of the current page. 
    // This code will be in a javascript file that won't be loaded at initial page load. 
    // You must make sure though that the below code does not use/include common code. 
    RootPanel.get().clear(); 
    RootPanel.get().add(newWidget); 
    } 
}); 
+0

谢谢您,您的代码行的作品,以及:) – brainsfrying

0

我想这很简单,只要:

Window.Location.assign( “MenuPage.html”);

相关问题