GWT - вернуть объект после загрузки файла из FormPanel?

Я загружаю файл с помощью FileUpload и FormPanel, на сервере я генерирую список, используя данные из загруженного файла. Проблема в том, что мне нужно отобразить этот список на клиенте, но я не могу найти способ его сериализации, используя сериализацию GWT в обычном HttpServlet. Только в RemoteServiceServlets, которые не могут обработать запрос FormPanel.

Кроме того, я бы даже не знал, как десериализовать объект на клиенте после того, как получил его от SubmitCompleteEvent.

2 ответа

Я разработал индивидуальное решение для этого в компании, в которой я работаю. Он использует некоторый код из проекта gwt-upload. Идея, которую я сделал, заключается в следующем:

  • вспомогательный сервлет для загрузки
    • получает файлы через почтовые запросы
    • обеспечить загрузку недавно загруженных файлов с помощью запросов get (параметр включает ID)
  • файловый сервис для административных задач
    • получение уникального идентификатора для загрузки файла в сервлет
    • спрашивать, каково состояние загрузки (проценты, ошибки, отмена, ок)
    • запрашивает "URL загрузки" (в основном проверяет, существует ли файл и предоставляет servletURL+id)

Я объявил структуру для статической обработки временно загруженных файлов. Таким образом, он является глобально видимым для сервлета и для контроллера GWT. Если вам это не нравится, вы можете также выполнить некоторую инициализацию в contextlistener и сохранить ссылку на глобальную систему загрузки файлов в контексте Application. Таким образом, реализация службы GWT и реализация servelt могут получить к ней доступ в любом случае.

Вместо того, чтобы пытаться использовать сериализацию GWT-RPC, я бы предложил использовать JSON для сериализации списка на сервере.

Другие вопросы по тегам