【问题标题】:GWT FormPanel does not redirect to action URLGWT FormPanel 不会重定向到操作 URL
【发布时间】:2018-09-01 03:18:17
【问题描述】:

我有一个使用 RequestFactory 和 UIBinder 的应用程序。该应用程序通过 RequestFactory 处理多个订单处理方法,然后最终将这些请求的结果发送到跟踪订单完成的页面。下面的代码包装在来自外部订单处理的 onSuccess() 事件中。我只提到它以防万一。

这是一个非常简单的FormPanel。但是,submit() 不会重定向到 action 属性设置的 URL。当我在浏览器的开发工具中查看时,我可以看到请求已成功发送到正确的 URL,但浏览器没有重定向到该页面或显示提交的响应。我做错了什么?

                FormPanel form = new FormPanel();
                form.setMethod(FormPanel.METHOD_POST);
                form.setEncoding(FormPanel.ENCODING_URLENCODED);
                form.setAction(System.getProperty(ORDER_COMPLETE_URL));
                form.setHeight("1px");
                form.setWidth("1px");
                form.addStyleName(AppController.HIDDEN_CLASS);

                Hidden transactionId = new Hidden();
                transactionId.getElement().setAttribute("name", "transactionId");
                transactionId.setValue(order.getOrder().getQuoteNumber());

                Hidden transactionTotal = new Hidden();
                transactionTotal.getElement().setAttribute("name", "transactionTotal");
                transactionTotal.setValue(order.getTotalAmount().toString());

                Hidden printURL = new Hidden();
                printURL.getElement().setAttribute("name", "printURL");
                printURL.setValue(order.getPrintURL());

                FlowPanel formStuffer = new FlowPanel();
                formStuffer.add(transactionId);
                formStuffer.add(transactionTotal);
                formStuffer.add(printURL);

                form.add(formStuffer);
                RootPanel.get().add(form);
                form.submit();

【问题讨论】:

    标签: gwt formpanel


    【解决方案1】:

    您正在使用default constructorFormPanel form = new FormPanel();

    您将在文档中找到以下信息:

    公共表单面板()

    创建一个新的 FormPanel。使用此构造函数创建时,它将被提交到隐藏的

    检查其他构造函数并找到最适合您要求的构造函数。

    【讨论】:

      【解决方案2】:

      感谢comment on this post,我终于想出了如何实现这一点。

      关键是在创建时为表单添加一个目标。

      FormPanel form = new FormPanel(String target);
      

      除非您已命名现有窗口,否则您需要将目标设置为“_self”或“_top”,然后使用该名称。

      【讨论】:

      • 嘿,当你发布你的答案时,我刚刚完成我的答案;)
      猜你喜欢
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      相关资源
      最近更新 更多