0

すべてのポートレットに動作を追加する必要があります。
何らかの条件をチェックする ajax クエリである必要があり、それが true の場合はメッセージを表示します。
最初に、アプリケーションのポータル スキンに html を追加することにしました。この html に、ajax クエリを作成するための js-script を追加します。しかし、WSRP を使用してポートレットにアクセスしているため、クエリを送信するためのコンテキストがわかりません。そのため、WSRP コンテキストを取得してクエリを作成できません。
次に考えたのは、すべてのポートレットに共通の jsp を追加し、この jsp でロジックを作成することでした (jsp からコンテキストを取得できます)。しかし、すべてのポートレットの jsp を (「include」タグを使用して) 変更するのは良くありません。
だから私の質問は次のとおりです:

  1. すべてのポートレットに動作を追加する方法は?
  2. JSでWSRPコンテキストを取得するには?
  3. ポートレットのjspを変更せずに、すべてのポートレットにjspを追加する方法は?

PS とにかく、ポータルのテーマに触れることはできません。

4

1 に答える 1

1

これには、WebSphere Portal でグローバル ポートレット フィルターを使用できるはずです。フィルター クラスを含む WAR モジュールを作成し、WPS が実行されているアプリケーション サーバーにデプロイします。ポータル内の Eclipse プラグ ポイント メカニズムを介してグローバル フィルタを記述する、呼び出さplugin.xmlれるファイルが必要です。クラスは、 javax.portlet.filter.PortletFilterWEB-INF標準インターフェースのサブタイプのいずれかを実装する必要があります。つまり、作成するコードは標準ベースです。

グローバル ポートレット フィルタを実装する場合は、ポータル上で呼び出されるすべてのポートレット (管理用ポートレットを含む) に対して、グローバル ポートレット フィルタが呼び出されることを理解する必要があります。意図したロジックを実行したくない場所で実行しないようにするには、各リクエストのコンテキスト パスを確認してください。

WPS ナレッジ センターの記事から:

グローバル ポートレット フィルタは、特定のポートレット コンテナで実行されているすべてのポートレットに影響するため、Integrated Solutions Console に含まれるコンソール モジュールもフィルタリングされます。コンソール モジュールまたはポートレットに対する望ましくない副作用について、フィルタの実装をテストすることが重要です。1 つの方法は、フィルター ロジックで要求のコンテキスト パスを確認してテストすることです。

頭の中で WSRP ポートレットのコンテキスト パスがわかりませんが、SystemOut のログを確認することで、この値が何であるかを特定し、正しい方向を示すことができるはずです。

最後に、この手法を説明するサンプル コード付きの記事がポータル wiki にあります。

于 2015-01-16T13:56:07.360 に答える