特定のURLパラメーターを使用して外部アプリケーションによって呼び出されるGWTアプリケーションを作成する必要があります。
例えば:
http://www.somehost.com/com.app.client.Order.html?orderId=99999 。
GWTアプリケーション内でorderIdパラメーターをキャプチャするにはどうすればよいですか?
試して、
String value = com.google.gwt.user.client.Window.Location.getParameter("orderId");
// parse the value to int
追伸GWTはネイティブjavascriptを呼び出すことができます。つまり、javascriptができればGWTもできます。例えばGWTでは、次のように書くことができます
public static native void alert(String msg)
/*-{
$wnd.alert("Hey I am javascript");
}-*/;
この場合、既存のjavascript libを使用して、クエリ文字列内のparamの値を抽出することもできます。
GWTには、URLからパラメーターを取得する機能があります。
String value = Window.Location.getParameter("param");
URLが次の形式であることを確認してください。
http://app.com/?param=value#placehttp://app.com/#place¶m=value の代わりに
マップ内のすべてのパラメーターを取得するには、次を使用します。
Map<String, List<String>> map = Window.Location.getParameterMap();
GWT 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