GWT: Как получить результат представления из FormPanel - PullRequest
14 голосов
/ 04 июня 2009

Пример из Javadoc FormPanel говорит:

"... Предполагая, что служба вернула ответ типа text / html, мы можем получить текст результата здесь (см. Документацию FormPanel для дальнейшего объяснения) ..."

Однако, Javadoc не объясняет немного об этой теме. Кто-нибудь нашел, как получить ответ HTML с сервера после отправки формы?

Ответы [ 7 ]

7 голосов
/ 04 июня 2009

Добавьте FormHandler к вашей FormPanel, и в onSubmitComplete вы получите FormSubmitCompleteEvent. Вызовите его метод getResults () для получения результата.

form.addFormHandler(new FormHandler() {
    public void onSubmit(FormSubmitEvent event) { // validation etc }

    public void onSubmitComplete(FormSubmitCompleteEvent event} {

         Window.alert(event.getResults()); // display the result
    }

};
4 голосов
/ 04 января 2012

Эта проблема возникает только в режиме отладки. Проверьте это: http://code.google.com/p/google-web-toolkit/issues/detail?id=3832

3 голосов
/ 13 июля 2010

Следуя ответу Роберта Мунтяну, вы должны посмотреть:

http://google -web-toolkit.googlecode.com / СВН / Javadoc / 2,0 / ком / Google / GWT / пользователь / клиент / щ / FormPanel.SubmitCompleteEvent.html

И там видно:

getResults

публичный java.lang.String getResults ()

Получает текст результата отправки формы.

Возвращает:

результат html или ноль, если при чтении произошла ошибка

Совет:

Результат html может быть нулевым в результате отправки формы в другой домен .

0 голосов
/ 15 февраля 2017

Для меня проблема заключалась в том, что я построил свой FormPanel с помощью конструктора FormPanel(String). С конструктором по умолчанию мой SubmitCompleteHandler просто работал.

0 голосов
/ 15 июля 2015

Мне удалось получить сообщение о результате в режиме DEV со следующим кодом:

клиентская сторона:

FormPanel formPanel = new FormPanel();
            FormElement.as(formPanel.getElement()).setAcceptCharset("UTF-8");
formPanel.setAction(sb.toString());
formPanel.setMethod(FormPanel.METHOD_POST);
formPanel.setVisible(false);
RootPanel.get().add(formPanel);
formPanel.submit();
formPanel.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler()     {                  
@Override
    public void onSubmitComplete(SubmitCompleteEvent event) {
        String results = event.getResults();
    }
});

на стороне сервера:

response.setContentType("text/html");
response.setHeader("Pragma", "No-cache");
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write(e.getMessage()); 

Браузер: Firefox 24.3.0, версия GWT: 2.5.1

0 голосов
/ 27 июня 2013

Я попытался заменить локальный хост именем машины, это не помогло [некоторые люди говорят, что это им помогло], но это проблема междоменного java-скрипта, поэтому я попытался просто использовать шаблон URL, назначенный в веб-XML, и я получил строковый результат. подробности смотрите в ответе резиновой утки по этой ссылке

Ошибка создания хранилища GWT при вызове createUploadUrl ()

0 голосов
/ 04 декабря 2009

// =========== на стороне клиента:

SubmitCompleteHandler sch = new SubmitCompleteHandler()
{
    public void onSubmitComplete(SubmitCompleteEvent event) 
    {
    //get back the data results that had input the .xml 
    String dpsString = event.getResults();

    //And do your wanted action with the result
    System.out.println(dpsString);
    }
};
uploadForm.addSubmitCompleteHandler(sch);   

// =========== на стороне сервера:

// parse and handle file, e.g. if there is an xml file
...
InputStream fileImputStream = uploadItem.getInputStream();
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(fileInputStream);
doc.getDocumentElement().normalize();
System.out.println("Root element of the doc is " + doc.getDocumentElement().getNodeName());
...
//Response to the request with the result  
dpsString = doc.getDocumentElement().getNodeName();
response.getWriter().write(new String(dpsString)); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...