GWT: Capturing URL parameters in GET request

后端 未结 4 1314
渐次进展
渐次进展 2020-12-13 17:13

I need to build a GWT application that will be called by an external application with specific URL parameters.

For example:

http://www.somehost.com/com.app

相关标签:
4条回答
  • 2020-12-13 17:39

    I suggest you to use GWT MVP . Assume that your url as

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

    And in your AppController.java --

    Try as

        ......
        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
            }
        }
    }
    ...........
    

    Another option , you can also use with Spring MVC. Here is an example ...

    // 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();
            }
      }
    }
    
    0 讨论(0)
  • 2020-12-13 17:47

    GWT has a facility to get params from the URL:

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

    Make sure your URLs are in the form of:

    http://app.com/?param=value#place instead of http://app.com/#place&param=value

    In order to get all params in a map, use:

    Map<String, List<String>> map = Window.Location.getParameterMap();
    
    0 讨论(0)
  • 2020-12-13 17:50

    Try,

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

    P.S. GWT can invoke native javascript which means if javascript can do the stuff, GWT can do it too; e.g. in GWT, you can write

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

    In this case, you can even use existing javascript lib to extract param's value in the querystring.

    0 讨论(0)
  • 2020-12-13 17:53

    You can use the Activities and Places to do that. When you create the Place for your page, you can set the orderId as a member. This member can be used afterwords when you create the Activity associated with the place (in ActivityMapper).

    The only restriction is that you can't send the orderId as a normal parameter. You will have to use an url with this form :

    127.0.0.1:60206/XUI.html?#TestPlace:orderId=1
    
    0 讨论(0)
提交回复
热议问题