GWT, перейдите на страницу с помощью запроса POST - PullRequest
1 голос
/ 11 сентября 2010

Я хочу отойти от моего приложения GWT, используя запрос POST.Если бы это был GET, я мог бы просто использовать Window.Location, и если мне не нужно, чтобы он был динамическим, я мог бы жестко закодировать форму и отправить ее.Кажется, что FormPanel - это ответ для создания и отправки форм, но он делает это асинхронно, и я хочу, чтобы браузер пользователя следил за отправкой формы, уходя от моего приложения, а не просто отображал результаты.

Кто-нибудь знает, как это сделать в Google Web Toolkit?

Ответы [ 3 ]

3 голосов
/ 12 сентября 2010

Хорошо, понял!

Передача NULL в конструктор String FormPanel фактически говорит "заменить текущую страницу":

new FormPanel((String)null);

Эта ветка форума была полезна: http://www.coderanch.com/t/120264/GWT/GWT-HTTP-post-requests

0 голосов
/ 12 сентября 2010

Я думал, что ваша идея 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. У меня был тот же результат, когда я пытался использовать POST на своих собственных сервлетах.

Должен быть способ сделать это.

0 голосов
/ 11 сентября 2010

Сам не сделал этого, но я думаю, что вы сможете создать FormPanel, а затем привести его элемент к FormElement и вызвать submit для FormElement.

FormPanel formPanel = new ...
FormElement form = FormElement.as(formPanel.getElement());
form.submit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...