我想使用POST请求离开我的GWT应用程序。如果它是一个GET,我可以使用Window.Location,如果我不需要它是动态的,我可以硬编码一个表格并提交它。 FormPanel似乎是创建和提交表单的答案,但它是异步的,我希望用户的浏览器遵循表单提交,导航离开我的应用程序,而不是仅显示结果。
有人知道如何在Google Web Toolkit中执行此操作吗?
答案 0 :(得分:4)
好的,明白了!
将null传递给FormPanel的String构造函数有效地说“替换当前页面”:
new FormPanel((String)null);
这个论坛帖子很有用: http://www.coderanch.com/t/120264/GWT/GWT-HTTP-post-requests
答案 1 :(得分:0)
我自己没有这样做,但我认为您应该能够创建一个FormPanel,然后将其元素转换为FormElement并在FormElement上调用submit。
FormPanel formPanel = new ...
FormElement form = FormElement.as(formPanel.getElement());
form.submit();
答案 2 :(得分:0)
我认为你的FormElement想法会起作用,但不幸的是它仍然发送它异步。以下两个成功发送请求并获得响应,但唉,页面不会更改。
_tmp.addClickHandler(new ClickHandler()
{
@Override
public void onClick(ClickEvent event_)
{
doPost();
}
public native void doPost() /*-{
var form = document.createElement("form");
form.setAttribute("method", "GET");
form.setAttribute("action", "http://www.google.com");
document.body.appendChild(form);
form.submit();
}-*/;
});
和
public void onClick(ClickEvent event_)
{
final FormPanel form = new FormPanel();
form.setAction("http://www.google.com");
form.setMethod(FormPanel.METHOD_GET);
RootPanel.get("main").add(form);
FormElement formElement = FormElement.as(form.getElement());
formElement.submit();
}
我意识到我在上面的例子中使用了GET方法。这纯粹是因为Google只接受GET。我在自己的servlet上尝试POST时得到的结果相同。
必须有办法做到这一点。