Миграция портлета Websphere, отсутствует параметр в DispatchAction - PullRequest
0 голосов
/ 10 февраля 2009

Я переношу старое приложение с портлетами из WPS5 в WPS6. Приложение использует устаревший контейнер IBM. Согласно руководству по миграции, я обновляю только некоторые библиотеки портала и некоторые ссылки на теги. Приложение все еще использует устаревший контейнер IBM и измененный портлет Struts.

Когда я создаю ссылку, например:

<html:link page="/page1.do?method=display">Go to Page 1</html:link>

Ссылка рендерит такой URL:

/wps/.../...[hash-like chars]_spf_strutsAction=!2fpage1.do!3fmethod%3ddisplay#[hash-like chars]

Я использую DispatchAction, который ищет параметр ' method ' для отправки. Однако, щелкнув ссылку выше, нельзя передать параметр ' method ' в dispatchAction. Дальнейшее расследование по параметру запроса обнаружило эту пару ключ-значение:

name: spf_strutsAction
value: !2fpage1.do!3fmethod=display

Так что вполне очевидно, что request.getParameter('method') возвращает ноль, потому что параметр скрыт под request.getParameter('spf_strutsAction') и, следовательно, действие не может быть отправлено.

Конечно, я могу вызвать диспетчерское действие, прочитав скрытый параметр. Но проблема в том, что есть много других параметров, кроме ' method '.

Я думаю, что сервер портала должен обеспечить реализацию PortletRequest. Это PortletRequest.getParameter () как-то неправильно? Или это проблема с портлетами? Как я могу поместить эти параметры обратно в объект запроса?

1 Ответ

1 голос
/ 06 июля 2009

Некоторые идеи:

  1. Вы можете использовать теги портлета для генерации ссылок.
  2. Ознакомьтесь с "новыми" банками распорок, которые поставляются с IBM Portal 6.0
  3. Рассмотрите возможность использования лучшей веб-инфраструктуры портлетов, такой как Spring Portlet MVC, которая совместима с jsr168. IBM не будет поддерживать свою старую модель портлета в будущем.
...