54 votes

GWT: Capture des paramètres d'URL dans une requête GET

J'ai besoin de créer une application GWT qui sera appelée par une application externe avec des paramètres d'URL spécifiques.

Par exemple:

http://www.somehost.com/com.app.client.Order.html?orderId=99999 .

Comment capturer le paramètre orderId dans l'application GWT?

86voto

codemeit Points 9327

Essayer,

 string value = com.google.gwt.user.client.Window.Location.getParameter("orderId");
// parse the value to int
 

PS GWT peut appeler du javascript natif, ce qui signifie que si le javascript est capable de le faire, GWT peut le faire aussi. par exemple, dans GWT, vous pouvez écrire

 public static native void alert(String msg)
/*-{
 $wnd.alert("Hey I am javascript");
}-*/;
 

Dans ce cas, vous pouvez même utiliser la bibliothèque javascript existante pour extraire la valeur de param dans la chaîne de requête.

19voto

supercobra Points 1320

GWT a la possibilité d’obtenir des paramètres à partir de l’URL:

 String value = Window.Location.getParameter("param");
 

Assurez-vous que vos URL sont sous la forme de:

http://app.com/?param=value#place au lieu de http://app.com/#place&param=value

Pour obtenir tous les paramètres dans une carte, utilisez:

 Map<String, List<String>> map = Window.Location.getParameterMap();
 

0voto

Cataclysm Points 332

Je vous suggère d'utiliser GWT MVP. Supposons que votre url

http://www.myPageName/myproject.html?#orderId:99999

Et dans votre AppController.java --

Essayer

    ......
    public final void onValueChange(final ValueChangeEvent<String> event) {
    String token = event.getValue();

    if (token != null) {
        String[] tokens = History.getToken().split(":");
        final String token1 = tokens[0];
        final String token2 = tokens.length > 1 ? tokens[1] : "";

        if (token1.equals("orderId") && tonken2.length > 0) {
            Long orderId = Long.parseLong(token2);
            // another your operation
        }
    }
}
...........

Une autre option , vous pouvez également l'utiliser avec Spring MVC. Voici un exemple ...

// Below is in your view.java or presenter.java

Window.open(GWT.getHostPageBaseURL() + "customer/order/balance.html?&orderId=99999",
            "_self", "enable");

// Below code in in your serverside controller.java

@Controller
@RequestMapping("/customer")
public class ServletController {
@RequestMapping(value = "/order/balance.html", method = RequestMethod.GET)
public void downloadAuctionWonExcel(@RequestParam(value = "orderId", required = true) final String orderId,
    final HttpServletResponse res) throws Exception {
    try {
        System.out.println("Order Id is "+orderId);
        // more of your service codes
        }
        catch (Exception ex) {
        ex.printStackTrace();
        }
  }
}

0voto

vlad_dd Points 1

Vous pouvez utiliser les Activities et Places pour le faire. Lorsque vous créez le lieu pour votre page, vous pouvez définir le orderId en tant que membre. Ce membre peut être utilisé comme mot-clé lorsque vous créez le Activity associé à l'endroit (dans ActivityMapper ).

La seule restriction est que vous ne pouvez pas envoyer le orderId en tant que paramètre normal. Vous devrez utiliser une URL avec ce formulaire:

 127.0.0.1:60206/XUI.html?#TestPlace:orderId=1
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X