J'ai besoin de savoir (en utilisant GWT) la stratégie de chargement d'une classe plutôt que d'autres en fonction de la valeur HTTP GET.GWT - Comment obtenir une valeur et décider quelle page charger
Exemple:
// 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);
}
}
Si mon GET
est http://localhost:8084/GWT/index.html
, je voudrais charger MainHomePage()
;
Sinon, si mon GET
est http://localhost:8084/GWT/index.html?page=2
, je voudrais charger MainAnotherClass()
;
Je dois implémenter ceci sur la classe PageLoader, sur XML, ou où? Je pense sur XML, parce que PageLoader est une classe côté client ... il n'y a aucun moyen de prendre une décision ici.
P.S. Je veux charger une autre page (alias, une autre classe principale), ne pas charger dinamiquement.
EXEMPLE I Tried
Merci à Chris Boesing
de solution this, je l'ai trouvé un morceau facile de code qui fais ce que j'ai besoin. Malheureusement, quelque chose ne va pas, car il appelle la méthode .clear()
, mais il n'ajoute pas mon nouveau conteneur. C'est le code:
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));
}
}
}
Qu'est-ce qui ne va pas?
Je crois que le conteneur de servlet est le programme qui choisit quelle page charger en fonction de l'URL. Je ne sais même pas si c'est possible mais cela dépend du serveur que vous utilisez? utilisez-vous Tomcat? GAE? JBoss? – Pace
Tomcat :) Mais quel est le servlet principal dans GWT? Je pense que je ne peux pas le gérer directement avec GWT, ou peut-être je ne sais pas ... – markzzz