GWT: захват параметров URL в запросе GET
Мне нужно построить приложение GWT, которое будет вызываться внешним приложением с определенными параметрами URL.
например:
http://www.somehost.com/com.app.client.Order.html?orderId=99999.
Как я могу захватить параметр orderId внутри приложения GWT?
4 ответов:
попробуйте
String value = com.google.gwt.user.client.Window.Location.getParameter("orderId"); // parse the value to intП. С. УГВ может вызывать JavaScript-код, который означает, что если JavaScript может делать вещи, УГВ тоже можете это сделать, например в GWT, то можно написать
public static native void alert(String msg) /*-{ $wnd.alert("Hey I am javascript"); }-*/;в этом случае вы даже можете использовать существующий javascript lib для извлечения значения param в строке запроса.
существует объекта, чтобы получить параметры из URL-адреса:
String value = Window.Location.getParameter("param");убедитесь, что ваши URL-адреса в виде:
http://app.com/?param=value#place вместо http://app.com/#place¶m=value
чтобы получить все параметры на карте, используйте:
Map<String, List<String>> map = Window.Location.getParameterMap();
Я предлагаю вам использовать ГВТ MVP . Предположим, что Ваш URL-адрес как
и в 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(); } } }
можно использовать
ActivitiesиPlacesдля этого. Когда вы создаете место для своей страницы, вы можете установить orderId в качестве члена. Этот элемент можно использовать после слов при созданииActivityсвязанный с местом (в ActivityMapper).единственное ограничение заключается в том, что вы не можете отправить orderId в качестве обычного параметра. Вы должны будете использовать url с этой формой:
127.0.0.1:60206/XUI.html?#TestPlace:orderId=1
Comments