古いポートレットアプリケーションを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
パラメータ'メソッド'を検索するを使用しています。ただし、上記のリンクをクリックしても、'メソッド'パラメータをdispatchActionに渡すことはできません。リクエストパラメータをさらに調査すると、このキーと値のペアが見つかりました。
name: spf_strutsAction
value: !2fpage1.do!3fmethod=display
したがって、パラメータが埋もれていてアクションをディスパッチできないrequest.getParameter('method')
ため、nullを返すことは明らかです。request.getParameter('spf_strutsAction')
もちろん、埋め込みパラメータを読み取ることで、ディスパッチアクションを強制できます。しかし、問題は、「メソッド」以外にも多くのパラメータがあることです。
ポータルサーバーはPortletRequestの実装を提供する必要があると思います。PortletRequest.getParameter()がどういうわけか間違っていますか?それとも、ポートレットストラットの問題ですか?これらのパラメータをリクエストオブジェクト内に戻すにはどうすればよいですか?