Core Frameworks
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

ポートレット

Liferay DXP は、 ポートレット と呼ばれる Java ベースの Web アプリケーション用のポータル サーバーとしてスタートしました ( JSR 168JSR-286、および JSR-362を参照)。 ポートレットは、他のWebアプリケーションと同様に、リクエストを処理して応答を生成します。 しかし、ポートレットと他のWebアプリの大きな違いの1つは、ポートレットがWebページの一部で実行されることです。 ポートレット アプリケーションを作成するときは、そのアプリケーションについてのみ考慮する必要があります。ページの残りの部分—、ナビゲーション、トップ バナー、およびインターフェイスのその他のグローバル コンポーネント—は、他のコンポーネントによって処理されます。 ポートレットはポータルサーバーでのみ実行されます。 ポートレットは、ユーザー管理、認証、権限、ページ管理などのポータルの既存のサポートを使用します。 これにより、ポートレットのコア機能の開発に集中できます。 多くの点で、アプリケーションをポートレットとして作成する方が、スタンドアロンアプリケーションを作成するよりも簡単です。

多くのポートレットは、ユーザー(権限がある場合)またはポータル管理者が1つのページに配置できます。 たとえば、あるページには、コミュニティイベント用のカレンダーポートレット、重要なお知らせ用のお知らせポートレット、およびコミュニティに関心のあるリンク用のブックマークポートレットを含めることができます。 ポートレットコードを変更せずに、ドラッグアンドドロップでページ上のポートレットの位置とサイズを変更できます。 フォーラムやWikiのような単一のポートレットは、そのページで必要な唯一のアプリであれば、ページ全体を占めることができます。 つまり、ポートレットは、JavaベースのWebアプリの開発に関連する従来の多くの問題点を軽減します。

複数のポートレットを1つのページに配置できます。

ポートレットのフェーズ

ポートレットは、複数のフェーズでリクエストを処理します。 これにより、ポートレットはサーブレットよりもはるかに柔軟になります。 各ポートレットのフェーズは、異なる操作を実行します。

レンダリング: 現在の状態に基づいてポートレットのコンテンツを生成します。 このフェーズが1つのポートレットで実行されると、ページ上の他のすべてのポートレットでも実行されます。 レンダリングフェーズは、ページ上の任意のポートレットがアクションフェーズまたはイベントフェーズを完了した後に実行されます。

アクション: ユーザーアクションに応答して、アクションフェーズはポートレットの状態を変更する操作を実行します。 アクションフェーズでは、イベントフェーズで処理されるイベントをトリガーすることもできます。 アクションフェーズとオプションのイベントフェーズの後に、レンダリングフェーズがポートレットのコンテンツを再生成します。

イベント: アクションフェーズでトリガーされたイベントを処理します。 イベントは、ポートレット間通信(IPC)に使用されます。 ポートレットがすべてのイベントを処理すると、ポータルはページ上のすべてのポートレットでレンダリングフェーズを呼び出します。

リソース提供: ライフサイクルの残りの部分から独立してリソースを提供し、ページ上のすべてのポートレットでレンダリングフェーズを実行せずに、ポートレットが動的コンテンツを提供できるようにします。 リソース提供フェーズはAJAXリクエストを処理します。

ヘッダ: レンダリングフェーズの前に、CSSなどのリソースの依存関係を指定できます。

ポートレットモード

ポートレットは、異なるモードとウィンドウ状態を持つという点でもサーブレットとは異なります。 モード名でポートレットの現在の機能を識別しますが、最近のほとんどのアプリケーションは閲覧モードのみを使用しています。

閲覧モード: 主な機能が実装されているポートレットのデフォルトモード。

編集モード: ポートレットの設定モード。 たとえば、天気ポートレットは、編集モードを使用して天気レポートの場所を定義できます。

ヘルプモード: ヘルプ情報またはドキュメンテーションを表示するためのモード。

ポートレットウィンドウの状態は、ポートレットがページ上で占めるスペースの量を制御します。 ウィンドウの状態は、従来のデスクトップ環境のウィンドウの動作を模倣しています。

Normal: ポートレットは、他のポートレットを含むページに配置できます。 これはデフォルトのウィンドウ状態です。

最大化: ポートレットが 1 ページ全体を占めます。

最小化: ポートレットのタイトル バーのみが表示されます。

サーブレットとのその他の違い

ポートレットはページの一部のみをレンダリングするため、 <html><head><body> などのグローバル タグは許可されません。 また、ポートレットのページが事前にわからないため、ポートレットのURLを直接作成することはできません。 代わりに、ポートレットAPIには、プログラムでポートレットURLを作成するためのメソッドが含まれています。 また、ポートレットはjavax.servlet.ServletRequestに直接アクセスできないため、URLから直接クエリパラメーターを読み取ることはできません。 代わりに、ポートレットはjavax.portlet.PortletRequestオブジェクトにアクセスします。 ポートレット仕様では、ポートレットがそれ自体のURLパラメーターまたはパブリックレンダーパラメータとして宣言されたパラメーターのみを読み取るためのメカニズムが提供されています。 ただし、Liferay DXPは、 ServletRequest およびクエリパラメーターにアクセスできるユーティリティメソッドを提供しています。 また、ポートレットには、ポートレットのライフサイクルの各フェーズで利用可能な ポートレットフィルターもあります。 ポートレットフィルターは、リクエストと応答をその場で変更できるという点でサーブレットフィルターに似ています。

Liferay DXP で Web フロントエンドを開発する方法にはすべてポートレットが関係します。 JavaScript ベースのウィジェットは、バックグラウンドで Liferay の JS Portlet Extender を使用し、Java ベースの Web フロントエンドは明示的にポートレットになります。 すべての Web フロントエンド タイプは、Portlet 3.0、依存性注入 (DI)、モデル ビュー コントローラー (MVC)、およびモジュール性のサポートが異なり、ポートレットを開発するための優れたオプションが豊富に用意されています。

以下では、ポートレットの開発を始めるための方法を紹介します。