| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > GWT перекрытие HttpServlet |
| Автор: SLAER 8.7.2009, 14:41 | ||||||||
Здравствуйте. У меня стоит задача написать что-то наподобие примитивного файлообменника, используя GWT и RPC-сервисы. Дошел до того, что нужно загрузить файл на сервер. Раньше я писал подобное приложение, где использовал для загрузки метод
сервлета:
Здесь же я использую RPC-сервисы и на серверной стороне создан класс
В нем есть метод doPost, но он финализирован:
поэтому перекрыть я его не могу. Подскажите пожалуйста, как мне из класса LibraryServiceImpl extends RemoteServiceServlet перекрыть метод doPost, принадлежащий HttpServlet'у, чтобы с его помощью мне загружать файл?? Заранее благодарен! |
| Автор: MisterCleric 8.7.2009, 15:22 |
| Слушай, я бы попробовал взять исходник вот этого RemoteServiceServlet: http://kickjava.com/src/com/google/gwt/user/server/rpc/RemoteServiceServlet.java.htm Скопировал его в отдельный свой класс, убрал final у метода doPost и от него наследовался бы в твоем LibraryServiceImpl У вдруг где-то еще понадобится такой метод переопределять? Хотя посмотри н его исходник, может лучше другой какой-то метод будет достаточно переопределить? |
| Автор: SLAER 8.7.2009, 20:22 | ||||
Я создаю новый класс RemoteServiceS , копирую туда этот сервлет:
в итоге idea выдает, что:
не серилиазованы. Как их сериализовать? Убрать их протсо нельзя. doPost, посредством вызова других методов этого класса их использует... |
| Автор: SLAER 8.7.2009, 20:53 | ||
у меня уже есть готовый сервлет для загрузки файлов:
может быть можно как-нибудь реализовать вызов его метода doPost из серверной части приложения (из класса LibraryServceImpl)? это было бы предпочтительней, так как под него уже настроено несколько методов в других бинах. Заранее спасибо. |
| Автор: MisterCleric 8.7.2009, 21:40 | ||
Смотри, в этом RemoteServiceServlet есть такие интересные методы:
Первые два как раз дают тебе доступ к реквесту и респонзу. а остальные где-то контейнером вызываются, куда ты можешь прикрутить своб логику по обработке FileUpload |
| Автор: SLAER 9.7.2009, 06:52 | ||
я поместил сервлет FileUploadServlet в класс LibraryServiceImpl. Вроде бы ошибок idea не выдала. но теперь встает другой вопрос: как вызвать метод doPost этого сервлета с клиентской части? Раньше вызывал его с JSP-страницы так:
если в кратце, то что вешать на обработчик клика по кнопке загрузки. Заранее благодарен. Не судите строго, я новичок |
| Автор: SLAER 9.7.2009, 10:38 | ||||
создаю на стороне сервера еще 1 метод, посредством которого пытаюсь вызвать doPost:
в результате пишет, что rq и rp не инициализированы. При попытке инициализации:
пишет, что они абстрактные и не могут быть инициализированы. Как его вызвать? |
| Автор: MisterCleric 9.7.2009, 10:46 | ||||
В корне не верно: такие объекты как реквест и респонз создаются контейнером и "жизнь" ихняя тоже происходит под управлением контейнера.
Я же показал, как из парент-класса RemoteServiceServlet получить и то и другое.... |
| Автор: SLAER 9.7.2009, 12:29 | ||||||
я получаю реквест и респонз, но вызов метода doPost требует throws IOException,ServletException. Если я объявляю метод на сервере так:
и соответственно в интерфейсе описываю его:
То при компиляции ошибок не выдает, а при запуске страница не грузится, и ругается на:
При этом шелл выдает такие ошибки: [TRACE] Finding entry point classes [ERROR] Unable to find type 'our.sample.client.Library' [ERROR] Hint: Previous compiler errors may have made this type unavailable [ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly может быть где-то указать, что будет метод с throws IOException,ServletException? |
| Автор: MisterCleric 9.7.2009, 12:36 |
| необязательно помечать метод как throws. Ты можешь обернуть вызов в try...catch. |
| Автор: SLAER 9.7.2009, 12:54 | ||
| я понял в чем проблема: имеется сервис:
и когда я пытаюсь вызвать doPost в методе CalldoPost(), он вызывает doPost из RemoteServiceServlet, а мне нужно, чтобы вызывал из FileUploadServlet. Как это можно сделать? |
| Автор: MisterCleric 9.7.2009, 13:11 |
| 1. В методе void CalldoPost() получаешь реквест и респонз из RemoteServiceServlet 2. Выносишь логику из FileUploadServlet в LibraryServiceImpl 3. Накладываешь эту логику на полученные реквест и респонз |
| Автор: SLAER 9.7.2009, 13:38 | ||||
решил делать по другому. инициализировал виджет для загрузки:
пытаюсь замапить на FileUploadservlet, который лежит в той же папке, что и клиентская часть. MyGrid.gwt.xml::
почему-то не находит страницу. Что я делаю не так? |
| Автор: SLAER 9.7.2009, 18:07 | ||||
возникла такая проблема: выполняю метод doPost:
на строчке:
вылетает с ошибкой (см. рисунок). Может быть знаете что это может быть? |
| Автор: MisterCleric 9.7.2009, 18:16 |
| Там на скрине написано в переводе на русский: полный стэк-трейс вы может посмотреть в логах ТомКат. Короче, давай полный стек-трейс. А вообще там явно написано, что NoSuchMethod. Колупай, кого это ты вызываешь, у которого нету такого метода |
| Автор: SLAER 9.7.2009, 19:34 |
| ошибка возникает из-за того, что я использую GWT-виджет FormPanel внутри GXT-виджета FormPanel. Использую GWT так как у GXT-виджета нету свойства onAction и onMetod, необходимые для маппинга на мой сервлет. может быть знаете выход из этой ситуации? |
| Автор: Atum 16.4.2011, 12:15 | ||||||||
| В данный момент решаю аналогичную задачу ! что получается Если вы берете GWT то просто следуете примеру описанному тут https://groups.google.com/group/Google-Web-Toolkit/msg/d33c6abb72559cde?hl=ru если используете чистое GXT то когда создаете то идете по аналогичному пути : Сервлет точно такой же как и в примере выше ... ничего не меняем .. грузить файлы через
скорее всего не получиться - так как там метода doPost final . На что следует обратить внимание при таком подходе ( года вы работаете с чистым GXT ) - это : Указать ему путь
у FileUploadField есть ряд недостатков .. - кнопку submit просто обернули красивыми стилями - при этом окно загрузки файла будет вызываться даже если кнопка не доступна или , вызов окна происходит даже если вы промахнетесь мимо кнопки и кликните рядом (место между текстовым полем и кнопкой) Вопрос для Всех кто пользуется GXT загрузчиком вместо GWT как понять что контент загрузился ? в GWT для этого есть onSubmitComplete! а что есть в GXT у её FormPanel? Подскажите!!!
|