2011-02-09 12 views
3

ボタンを押すと、サーバーにデータがいくつかポストされ、別のページにリダイレクトされます。 私はRequestBuilderを使用しましたが、応答を待っていますが、もちろんそれを取得します。何も起こりません、同じページが残ります。私はここでRequestBuidlerを使うべきではないと思っています...データを投稿してリダイレクトできるのはどうすればいいですか? GWTGWTを使用してデータを投稿し、別のページにリダイレクトする方法は?

public void postData(final String data, final String url) { 
    RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url); 
    try { 
     builder.sendRequest(data, new RequestCallback() { 
      public void onError(Request request, Throwable exception) { 
       ... 
      } 

      public void onResponseReceived(Request request, 
        Response response) { 
       if (200 == response.getStatusCode()) { 
        .. 
       } else { 
        .. 
       } 
      } 
     }); 
    } catch (RequestException e) { 
     ... 
    } 
    return; 
} 
+1

+1非常に重要な質問です。 – MockerTim

答えて

4
FormPanel form = new FormPanel("_self"); 
    form.setMethod(FormPanel.METHOD_GET); 

    Hidden params0 = new Hidden("param1", "value1"); 
    Hidden params1 = new Hidden("param1", "value2"); 
    Hidden params2 = new Hidden("param2", "value3"); 

    FlowPanel panel = new FlowPanel(); 
    panel.add(params0); 
    panel.add(params1); 
    panel.add(params2); 

    form.add(panel); 

    form.setAction(GWT.getModuleBaseURL() + "../MyServlet"); 
    RootPanel.get().add(form); 
    form.submit(); 

のようなものを持つべきです。コードはFormPanelを追加し、フォームを送信します。

+0

こんにちは!アドバイスをありがとう。不思議なのは、フォームにparamを追加しようとすると例外が発生することです。form.add(param); 原因:java.lang.IllegalStateException:SimplePanelには、com.google.gwt.user.client.ui.SimplePanel.add(SimplePanel.java:57)に という子ウィジェットが1つしか含まれていない可能性があります。 at com.webshop.client.HelloGwt $ 5.onClick(HelloGwt.java:271) com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:54) – whatswrong

+0

FormPanelにパラメータを直接追加することはできません。多くのパラメータを追加する唯一の方法は、他のパネルを使用して追加することです。この例では、FlowPanelです。 paramsのコンテナだけであることを再確認してください。 ここではチュートリアルを拡張しました:http://examples.roughian.com/index.htm#Panels~FormPanel。 解決策として私の答えを受け入れてください。 – kospiotr

+0

返信いただきありがとうございます!しかし、依然として、form.submit()が完了した後、ブラウザはページを更新しません!同じページが残ります!同じ非同期呼び出しですか、私はform.submit()を意味しますか?私は、ブラウザから私のコントローラを試して、GETメソッドを変更して、それがうまくいった(新しいURLにリダイレクトされた)が、Javaスクリプトからはできなかった! – whatswrong

0

で春

@RequestMapping(method=RequestMethod.POST, value="/ddd") 
public ModelAndView processOrder(@RequestBody String orderInString, HttpSession session) throws Exception{ 
    ... 
    return new ModelAndView(new RedirectView("abc")); 

} 

がより仕様、コードを追加し、これがブラーです。 あなたは春のMVCを使用しているので、あなたはそれザッツこの

private static final String newPage = "index2"; //this is resolved with view resolver 
@RequestMapping(params = "action=button") 
protected String getALPLicense(final RenderRequest request, 
      final RenderResponse response, final Model model) throws Exception { 
try{ 
}catch{ 
} 
return newPage; //this is your new redirected page 
} 
関連する問題