GWT: захват параметров URL в запросе GET - PullRequest
53 голосов
/ 26 февраля 2009

Мне нужно создать приложение GWT, которое будет вызываться внешним приложением с конкретными параметрами URL.

Например:

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

Как мне записать параметр orderId внутри приложения GWT?

Ответы [ 4 ]

85 голосов
/ 26 февраля 2009

Попробуйте,

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

P.S. GWT может вызывать нативный javascript, что означает, что если javascript может делать то же самое, GWT может это делать; например в GWT можно написать

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

В этом случае вы даже можете использовать существующую библиотеку JavaScript для извлечения значения параметра в строке запроса.

19 голосов
/ 31 октября 2012

GWT имеет возможность получать параметры с URL:

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

Убедитесь, что ваши URL-адреса имеют вид:

http://app.com/?param=value#place вместо http://app.com/#place&param=value

Чтобы получить все параметры на карте, используйте:

Map<String, List<String>> map = Window.Location.getParameterMap();
0 голосов
/ 23 апреля 2014

Вы можете использовать Activities и Places, чтобы сделать это. Когда вы создаете место для своей страницы, вы можете установить orderId в качестве участника. Этот член может использоваться после слов при создании Activity, связанного с местом (в ActivityMapper ).

Единственное ограничение - вы не можете отправлять orderId как обычный параметр. Вам нужно будет использовать URL с этой формой:

127.0.0.1:60206/XUI.html?#TestPlace:orderId=1
0 голосов
/ 29 января 2014

Я предлагаю вам использовать GWT MVP . Предположим, что ваш URL-адрес как

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

А в вашем AppController.java -

Попробуйте как

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

Другой вариант, вы также можете использовать с Spring MVC . Вот пример ...

// 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();
        }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...