この記事は、OSGiフレームワークを使用する際に、 getOriginalServletRequest 関数を使用して、デフォルトの queryString を取得する方法についての参考ガイドとして提供します。 Liferay Portal 6.2 EEに慣れ親しみ、現在DXP 7.0(7.1、7.2、7.3も)を使用している開発者は、特定のリクエストがOSGiを介して代わりにルーティングされるようになったことに気付くでしょう。
解像度
ユースケースその1
開発者は、カスタムポートレット内で追加のURLパラメータを必要とします。
ユースケースその2
開発者は、レイアウトのデフォルトQuery Stringから、 paramName を追加する必要があります。
- 任意のサイトへ移動します。
- 右上の「 設定ページ」 のアイコンをクリックします。
- [詳細設定] タブをクリックします。
-
Query String フィールドに以下を入力:
p_p_id={portlet name}&_{portlet name}_paramName=paramValue - [Save]ボタンをクリックします。
LPS-56630の修正前は、 getOriginalServletRequest のコマンドは、Liferay以外のリクエストラッパーに遭遇すると停止します。これは、アプリケーションサーバーが実行する内部転送によって作成された最後のサーブレットリスクを保持することを意味しています。
しかし、一部の処理をOSGiに移行することで発生する LPS-56630 を修正するために、 HttpServletRequestWrappers のすべてを「アンラップ」する必要があることが判明した。 これらは、リクエストがOSGiを経由したときにOSGiによって追加されたものでした。
この修正により、OSGiで追加されたものだけでなく、アプリケーションサーバーで追加されたものも同様にアンラップされるようになりました。
この仕組みの例として、刷新された「ネストド・ポートレット」ポートレットをご覧ください。 サンプルでは、通常のリクエストから転送されたリクエストに遷移する際に、解凍処理を停止する方法を紹介しています。
GitHubのソースを参照してください: ネストされたポートレット.