GWT FormPanel 不重定向到操作 URL
GWT FormPanel does not redirect to action URL
我有一个使用 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();
感谢 comment on this post。
我终于想出了如何实现这一点
关键是在创建时为表单添加一个目标。
FormPanel form = new FormPanel(String target);
您需要将目标设置为“_self”或“_top”,除非您已命名现有 window,然后使用该名称。
您正在使用 default constructor:FormPanel form = new FormPanel();
在文档中,您将找到以下信息:
public FormPanel()
Creates a new FormPanel. When created using this constructor, it will be submitted to a hidden <iframe> element, and the results of the submission made available via FormPanel.SubmitCompleteHandler.
检查其他构造器并找到最适合您要求的构造器。
我有一个使用 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();
感谢 comment on this post。
我终于想出了如何实现这一点关键是在创建时为表单添加一个目标。
FormPanel form = new FormPanel(String target);
您需要将目标设置为“_self”或“_top”,除非您已命名现有 window,然后使用该名称。
您正在使用 default constructor:FormPanel form = new FormPanel();
在文档中,您将找到以下信息:
public FormPanel()
Creates a new FormPanel. When created using this constructor, it will be submitted to a hidden <iframe> element, and the results of the submission made available via FormPanel.SubmitCompleteHandler.
检查其他构造器并找到最适合您要求的构造器。