GWT: Как получить результат представления из FormPanel
Пример из FormPanel javadoc говорит:
"... Предполагая, что служба вернула ответ типа text/html, мы можем получить текст результата здесь (см. документацию FormPanel для дальнейшего объяснения)..."
Однако javadoc не объясняет немного об этой теме. Кто-нибудь нашел, как получить ответ HTML, отправленный с сервера после отправки формы?
Ответы
Ответ 1
Добавьте 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
}
};
Ответ 2
Эта проблема возникает только в режиме отладки. Проверьте это: http://code.google.com/p/google-web-toolkit/issues/detail?id=3832
Ответ 3
Следуя ответу от "Robert Munteanu", вы должны посмотреть:
http://google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google/gwt/user/client/ui/FormPanel.SubmitCompleteEvent.html
И там вы можете увидеть:
getResults
public java.lang.String getResults()
Получает текст результата представления формы.
Возврат:
результат html, или null, если была ошибка с его чтением
Совет:
Результат html может быть нулевым в результате отправки формы в другой домен.
Ответ 4
//=========== на стороне клиента:
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));
Ответ 5
Я попытался заменить локальный хост машинным именем, это не помогло [некоторые говорят, что это помогло им], но это проблема с перекрестным доменом java- script, поэтому я попытался просто использовать шаблон URL, назначенный в веб-xml и я получил результат String. для получения дополнительной информации см. ответ резиновой утки в этой ссылке
Ошибка GWT Blobstore при вызове createUploadUrl()
Ответ 6
Мне удалось получить сообщение результата в режиме 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
Ответ 7
Для меня проблема заключалась в том, что я построил свой FormPanel
с помощью конструктора FormPanel(String)
. С конструктором по умолчанию мой SubmitCompleteHandler
просто работал.