Мне нужно знать (используя 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
is <a href="http://localhost:8084/GWT/index.html" rel="nofollow noreferrer">http://localhost:8084/GWT/index.html</a>
, я хотел бы загрузить MainHomePage()
;
Иначе, если мой GET
равен <a href="http://localhost:8084/GWT/index.html?page=2" rel="nofollow noreferrer">http://localhost:8084/GWT/index.html?page=2</a>
, я хотел бы загрузить MainAnotherClass()
;
Мне нужнореализовать это в классе PageLoader, в XML или где?Я думаю о xml, потому что PageLoader - это класс на стороне клиента ... здесь невозможно принять решение.
PS Я хочу загрузить другую страницу (псевдоним, другой основной класс), а не загружать ее*. динамически,К сожалению, что-то не так, потому что он вызывает метод .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));
}
}
}
Что не так?