特定のURLパラメータを持つ外部アプリケーションによって呼び出されるGWTアプリケーションをビルドする必要があります。例えばGWT:GETリクエストでURLパラメータを取得する
:
http://www.somehost.com/com.app.client.Order.html?orderId=99999。
GWTアプリケーション内でorderIdパラメータを取得するにはどうすればよいですか?
特定のURLパラメータを持つ外部アプリケーションによって呼び出されるGWTアプリケーションをビルドする必要があります。例えばGWT:GETリクエストでURLパラメータを取得する
:
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
P.S. GWTはネイティブのjavascriptを呼び出すことができます。これは、javascriptがそのようなことを行うことができれば、GWTもそれを行うことができます。例えばGWTで、あなたはこの場合
public static native void alert(String msg)
/*-{
$wnd.alert("Hey I am javascript");
}-*/;
を書くことができ、あなたも、クエリ文字列でのparamの値を抽出するために、既存のjavascriptのlibを使用することができます。
@codemeit、これをgwtコードに入れる場所はどこですか?メインエントリーポイントに?たとえば、他のWebアプリケーションから呼び出されるhttp://mygwtapp.com/process.html?query=123を持っているか、ブラウザバーに手書きで書かれています。 – xybrek
は** S ** tring、そうでしょうか? –
GWTは、URLからのparamsを取得する機能を持っています
String value = Window.Location.getParameter("param");
URLはの形であることを確認してください:すべてのparamsを取得するために、代わりにhttp://app.com/#place¶m=value
の
http://app.com/?param=value#placeマップでは、次のように使用します。
Map<String, List<String>> map = Window.Location.getParameterMap();
このメソッド 'Window.Location.getParameter(" param ")'は、どこにでも配置できるので、私のGWTアプリケーションに最適です。 – hyip
ouはGWT MVPを使用します。
......
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
}
}
}
...........
別のオプションとして
てみてください、あなたも一緒に使用することができます - は
そして、あなたのAppController.javaのようにあなたのURLが想定しますSpring MVC。ここでの例では、あなたがそれを行うためにActivities
とPlaces
を使用することができます...
// 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();
}
}
}
です。あなたのページの場所を作成するときに、orderIdをメンバーとして設定することができます。このメンバーは、その場所に関連付けられたActivity
(ActivityMapper)を作成するときに後で使用できます。
唯一の制限は、通常のパラメータとしてorderIdを送信できないことです。
127.0.0.1:60206/XUI.html?#TestPlace:orderId=1
私は同様の問題に取り組んでいますが、どのようにorderID = 99999のようなパラメータにアプリケーションの返信をしていますか?私はそのようなパラメータをどのように扱うのか? – xybrek
@xybrek提供されている[履歴の仕組み](http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsHistory.html)をGWT(ページの再読み込みを避けるために#を使用している)で考えると、メインエントリポイントの 'onLoad()'メソッドで呼び出されるメインエントリポイントにメソッドを配置する必要があります。ページが呼び出されるたびに、指定されたパラメータを検査して処理できる専用のメソッドが呼び出されます。 – Dennis