我想使用POST請求離開我的GWT應用程序。如果它是一個GET,我可以使用Window.Location,如果我不需要它是動態的,我可以硬編碼一個表單並提交它。 FormPanel似乎是創建和提交表單的答案,但它是異步執行的,我希望用戶的瀏覽器遵循表單提交,遠離我的應用程序導航,而不是僅顯示結果。GWT,使用POST請求導航到頁面
任何人都知道如何在Google Web Toolkit中做到這一點?
我想使用POST請求離開我的GWT應用程序。如果它是一個GET,我可以使用Window.Location,如果我不需要它是動態的,我可以硬編碼一個表單並提交它。 FormPanel似乎是創建和提交表單的答案,但它是異步執行的,我希望用戶的瀏覽器遵循表單提交,遠離我的應用程序導航,而不是僅顯示結果。GWT,使用POST請求導航到頁面
任何人都知道如何在Google Web Toolkit中做到這一點?
好的,明白了!
傳遞null到FormPanel中的String構造有效地寫着「替換當前頁面」:
new FormPanel((String)null);
本次論壇主題是有用的: http://www.coderanch.com/t/120264/GWT/GWT-HTTP-post-requests
雖然我自己做了這個,但我認爲你應該可以創建一個FormPanel,然後將其元素轉換爲FormElement並在FormElement上調用submit。
FormPanel formPanel = new ...
FormElement form = FormElement.as(formPanel.getElement());
form.submit();
我認爲你的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的結果相同。
一定有辦法做到這一點。
如果您沒有在代碼中構建UI,那麼您可以使用轉換技巧將目標設置爲null。 請參閱[此SO帖子](http://stackoverflow.com/questions/11890068/how-post-entire-page-in-gwt-form-panel) – kierans 2012-09-05 01:37:21