0

古いポートレットアプリケーションを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()がどういうわけか間違っていますか?それとも、ポートレットストラットの問題ですか?これらのパラメータをリクエストオブジェクト内に戻すにはどうすればよいですか?

4

1 に答える 1

1

いくつかのアイデア:

  1. ポートレットタグを使用してリンクを生成できます。
  2. IBMPortal6.0に付属している「新しい」ストラットジャーを確認してください
  3. jsr168に準拠したSpringPortletMVCなどのより優れたポートレットWebフレームワークの使用を検討してください。IBMは、将来、古いポートレットモデルをサポートしなくなります。
于 2009-07-06T05:56:14.170 に答える