如何使用GWT发布数据并重定向到另一个页面?

如何使用GWT发布数据并重定向到另一个页面?,gwt,spring-mvc,Gwt,Spring Mvc,当我按下一个按钮时,我将一些数据发布到服务器,然后重定向到另一个页面。 我使用了RequestBuilder,但它正在等待响应,当然,它也会得到响应。什么也没发生,相同的页面保持不变。我知道这里不应该使用RequestBuidler。。。我应该使用什么来发布数据并能够重定向 春天 @RequestMapping(method=RequestMethod.POST, value="/ddd") public ModelAndView processOrder(@RequestBody String

当我按下一个按钮时,我将一些数据发布到服务器,然后重定向到另一个页面。 我使用了RequestBuilder,但它正在等待响应,当然,它也会得到响应。什么也没发生,相同的页面保持不变。我知道这里不应该使用RequestBuidler。。。我应该使用什么来发布数据并能够重定向

春天

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

}
在GWT中

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

添加更多规范、代码,这是模糊的。 因为您使用的是SpringMVC,所以应该有这样的功能

 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
 }

就这样。代码添加FormPanel并发送表单。

Hi!谢谢你的建议。奇怪的是,我在尝试将param添加到表单时遇到异常:form.add(param);原因:java.lang.IllegalStateException:SimplePanel只能包含com.google.gwt.user.client.ui.SimplePanel.add(SimplePanel.java:57)com.webshop.client.HelloGwt$5.onClick(HelloGwt.java:271)com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:54)上的一个子小部件您不能直接将参数添加到FormPanel,因为它是一个小部件面板。添加多个参数的唯一方法是通过另一个面板添加它们。在本例中,它是FlowPanel。请记住,它是参数的唯一容器。这里有扩展教程:。请接受我的回答作为解决方案。谢谢回复!但在表单.submit()完成后,浏览器仍然不会刷新页面!相同的页面保持不变!我是说form.submit()是同一个异步调用吗?我在浏览器中尝试了我的控制器,更改了获取的方法,它成功了(重定向到新的url),但在java脚本中没有+太棒了。你回答了这个非常重要的问题。
    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();