Я переношу старое приложение с портлетами из 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 () как-то неправильно? Или это проблема с портлетами? Как я могу поместить эти параметры обратно в объект запроса?