GWT - 如何获取值并决定加载哪个页面

标签 gwt get

我需要知道(通过使用 GWT)如何根据 HTTP GET 值加载某些类而不是其他类的策略。

示例:

// Main.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">

<module>
    <inherits name="com.google.gwt.user.User"/>
    <entry-point class="org.sinfonet.client.PageLoader"/>
</module>

// PageLoader
package org.sinfonet.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.RootPanel;

public class PageLoader implements EntryPoint {
    public void onModuleLoad() {
        FlowPanel pageloader=new FlowPanel();
        pageloader.add(new MainHomePage());
        RootPanel.get().add(pageloader);
    }
}

如果我的GET<a href="http://localhost:8084/GWT/index.html" rel="noreferrer noopener nofollow">http://localhost:8084/GWT/index.html</a> ,我想加载MainHomePage() ;

否则,如果我的GET<a href="http://localhost:8084/GWT/index.html?page=2" rel="noreferrer noopener nofollow">http://localhost:8084/GWT/index.html?page=2</a> ,我想加载MainAnotherClass() ;

我需要在 PageLoader 类、XML 或哪里实现这个?我认为在xml上,因为PageLoader是一个客户端类...这里无法做出决定。

附注我想加载另一个页面(别名,另一个主类),而不是动态加载它。

我尝试过的示例

感谢Chris Boesingthis解决方案,我找到了一段简单的代码可以满足我的需要。不幸的是,有些事情是错误的,因为它调用 .clear()方法,但它不会附加我的新容器。这就是代码:

public class PageLoader implements EntryPoint, ValueChangeHandler<String> {
    private FlowPanel pageloader;
    private GWTServiceAsync rpcService;

    public void onModuleLoad() {
        pageloader=new FlowPanel();
        rpcService=GWT.create(GWTService.class);
        pageloader.add(new HomepageContext(rpcService));
        RootPanel.get().add(pageloader);

        History.addValueChangeHandler(this);
        if(!History.getToken().isEmpty()){
            changePage(History.getToken());
        }
    }

    public void onValueChange(ValueChangeEvent event) {
        changePage(History.getToken());
    }

    public void changePage(String token) {
        if(History.getToken().equals("apartment")) {
            pageloader.clear();
            pageloader.add(new ApartmentContext(rpcService));
        } else {
            pageloader.clear();
            pageloader.add(new HomepageContext(rpcService));
        }
    }    
}

出了什么问题?

最佳答案

我想你会想要实现一个 ValueChangeHandler< String > ,并使用 History ( History.addValueChangeHandler(changeHandler ) )。

然后,在您的 valuechangehandler 实现中,您可以获得请求的 token 并选择要显示的 View 。

希望这有帮助:)

关于GWT - 如何获取值并决定加载哪个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4232863/

相关文章:

java - GWT 应用程序无法从我的 RequestContext 接口(interface)中找到匹配方法

java - GWT 验证的用户 session

使用 varchar 数据类型作为输入的 PHP GET 请求

javascript - 如何使用 JavaScript 发出 get 请求?

javascript - GWT HTTP 响应 getText() 作为二进制

java - GWT UiBinder CSS 样式

java - ContentPanel 中的 GXT 网格弄乱了 BorderLayout

javascript - getElementsByTagName 与 jQuery

javascript - jQuery getJSON 响应

javascript - 我的 $.get 请求失败,但我需要的值在错误消息中。我怎么才能得到它?